scalaz の Scala 2.13.0-M3 対応

まだ途中・・・。 毎回(?) implicit の規則変わるの勘弁してほしい
0
Kenji Yoshida @xuwei_k

github.com/scalaz/scalaz/… 一部は致し方ない部分もありそうだけど、ちゃんとpriority制御のためにclassをわけて積み上げて定義してるのにimplicitが衝突するように変わる場合もあるというの、全く納得がいってないのだけど、色々バグ関連してたりして完全に状況を把握できてない難しい

2018-01-28 01:41:24
Kenji Yoshida @xuwei_k

def idTOrder[F[_], A](implicit F: Order[F[A]]): Order[IdT[F, A]] と def idTEqual[F[_], A](implicit F: Equal[F[A]]): Equal[IdT[F, A]] を別のclassに優先順位付けて定義しても衝突するっぽいけど、両方必要だし、これで衝突するなら、もうどうしようもないような (コンパイラの挙動戻してくれ)

2018-02-01 14:04:06
Kenji Yoshida @xuwei_k

いや、同じようにclass積み上げて優先順位定義でも idTOrder の方を子に定義して、 idTEqual を親に定義すると Equal[IdT[F, A]] のインスタンス召喚時に衝突しないの・・・!?なんでそうなったんだ・・・今までよりimplicitの仕様さらに複雑になったような

2018-02-01 14:11:55
Kenji Yoshida @xuwei_k

それだけなのかな、他にも気をつけることあるのかな。 それを元に、7.3はまぁいいんだけど、scalaz 7.2ではバイナリ互換保つという制約条件のなか、 implicit 衝突回避のパズル解かないといけない

2018-02-01 14:13:17
Kenji Yoshida @xuwei_k

LazyEitherT あたりとか、積み上げてあるabstract classもう足りなくて不可能では・・・

2018-02-01 14:49:24
Kenji Yoshida @xuwei_k

いや、たしか親にtrait追加はバイナリ互換壊れるけど、abstract classの親にabstract class追加なら壊れない(?)ならいけるか?

2018-02-01 14:53:38
Kenji Yoshida @xuwei_k

Scala 2.10ではimplicitで定義してあったほうがいいけど、2.13.0-M3ではそれのせいで衝突する、みたいなパターンが発生しており、バイナリ互換は維持できても、ソースコード互換保つのはかつて無いほど謎な工夫しない限りちょっと無理ゲー感がある。どうするかな・・・

2018-02-01 19:45:43
Adriaan Moors @adriaanm

🎈 #scala 2.13.0-M3 🎉 Thanks to all who made this milestone happen! On to the next one, which will integrate the new collections design! github.com/scala/scala/re…

2018-02-01 19:54:41
Kenji Yoshida @xuwei_k

Scalaのimplicit解決の細かい挙動、かなり細かいものまで含めると、マジで毎回変わってる気がする、辛い

2018-02-01 20:01:03
Kenji Yoshida @xuwei_k

お、(わりといつも遅れるときあるのに)今回もうscalacheckの2.13.0-M3対応リリースされてるっぽい

2018-02-01 20:04:38
Kenji Yoshida @xuwei_k

既に一番多いと sealed abstract class WriterTInstances15 という、15個sealed abstract class積み重なってるけど、バイナリ互換維持するために衝突するもののimplicitだけ除去しつつ並び替えしてclass 20個以上積み重ねればいけるかもしれない、という希望が見えてきた。 20個ってなんだよ、ウケる

2018-02-01 22:48:57
Kenji Yoshida @xuwei_k

結局classの積み上げは18個で済んだけど、これテスト足りてないだけでまだ衝突するimplicitが存在している可能性が否定しきれないし、テスト and/or メイン側を自動生成とか、もっといい感じにしたい、とずっと前から思っているが実現できていない github.com/scalaz/scalaz/…

2018-02-02 09:13:46