These are chat archives for scalajp/functional

3rd
Dec 2015
kenji yoshida
@xuwei-k
Dec 03 2015 14:59
scalaz/scalaz#1063 誰かJava 8のtime詳しい人いないですかね・・・。反応無いけどそろそろ勝手にmergeするかな
Tsukasa Kitachi
@kxbmap
Dec 03 2015 15:05
普通に使ってはいたけど詳しくはない
YearLocalDateEnumのインスタンスになってるけど、テストはorder.lawsでいいのかな?
kenji yoshida
@xuwei-k
Dec 03 2015 15:10
おっ、よくない気がする。直そう。ありがとうございます
Tsukasa Kitachi
@kxbmap
Dec 03 2015 15:15
YearMonthplus/minusMonthsEnumにできそう
kenji yoshida
@xuwei-k
Dec 03 2015 15:16
なるほど?それもやってみるか
Tsukasa Kitachi
@kxbmap
Dec 03 2015 15:31
あれ?EnumLawみるとsucc(pred(x))とかできなきゃいけないのか
としたら、↑のやつはみんな例外吐いちゃうな
kenji yoshida
@xuwei-k
Dec 03 2015 15:45
Arbitraryもしっかり作ろうとすると面倒だった。本当はscalacheckがJava7サポート切り捨てれば、scalacheck側に存在してていいやつ・・・
scalacheckがJava7サポート切り捨てない間、あの数十行を「scalacheck-java8」みたいな独立したライブラリにしてもいいのだけど、流石に面倒だしなぁ
kenji yoshida
@xuwei-k
Dec 03 2015 15:55
たしかに、このあたり https://github.com/scalaz/scalaz/blob/16c51d6ddda443a0faf0deea6eb9a4e6a31a1b45/core/src/main/scala/scalaz/Enum.scala#L196-L200 満たせそうにないから、テスト側修正じゃなくて、YearとかはEnumにするの諦めたほうが良い気がしてきた
もしくはminやmaxをNoneのままにしておけばいいのか?
Tsukasa Kitachi
@kxbmap
Dec 03 2015 16:20
HaskellのEnumはsucc maxBoundは実行時エラーなのか
Tsukasa Kitachi
@kxbmap
Dec 03 2015 16:31

もしくはminやmaxをNoneのままにしておけばいいのか?

これでいい気もする
Year.MAX_VALUEでsuccが例外なのはBigIntがメモリ一杯まで使ったらsuccで例外になるのと同じだという理屈でいけば……

あるいは諦める
kenji yoshida
@xuwei-k
Dec 03 2015 17:13
Noneにした
HaskellのEnumとscalazのEnumが微妙に違ってるのとか、そもそもEnumのlawあれでいいのか、型クラスもっと細かく分けることも可能では?みたいな細かい論点あると個人的に思ってるけど、
面倒なので議論してない
Tsukasa Kitachi
@kxbmap
Dec 03 2015 17:43
あと細かいとこいえばMonth.of(x).maxLengthとかMonth.of(x).length(Year.of(y).isLeap)でdayの最大値取れるよとか
前にjava.timeのArbitrary書いたことあるの思い出した。pushし忘れててOSクリーンインストールしたときにプロジェクトごと消しちゃったけど