#scalaz 7 の enum

3
Kenji Yoshida @xuwei_k

scalazのenumがDoubleやFloatでテスト失敗する https://t.co/HhspmK1m ってのと android-pluginの0.12対応してみたけどこんな感じでいいの? https://t.co/Dpl2ZrEP って投稿してどっちも返信ないんだけど誰か

2012-08-11 09:25:16
ssmylh @ssmylh

.@xuwei_k さんが言ってるのは、Int.MaxValue == Int.MinValue.pred はtrueだけど、Double.MaxValue == Double.MinValue.pred はfalseってことか。 https://t.co/59wI5Xxq

2012-08-11 11:40:38
ssmylh @ssmylh

Double.MinValue - 1 == Double.MinValue ってtrueなんだ…

2012-08-11 11:47:02
Kenji Yoshida @xuwei_k

@ssmylh 現状のscalaz7のenumが、Haskell をもとに作ったと書いてあるけど、Haskell のenum ともある程度異なるから、その辺りの設計思想がよくわからないんですよね。bugなのか仕様なのか。

2012-08-11 11:50:29
ねこはる @halcat0x15a

@xuwei_k @ssmylh haskellの場合は、 The calls succ maxBound and pred minBound should result in a runtime error. と書いてありますね。

2012-08-11 11:54:53
ねこはる @halcat0x15a

はすけるにあわせるとしたらsuccとか例外投げるようにしなきゃいけない。

2012-08-11 11:56:38
ねこはる @halcat0x15a

succ (maxBound :: Int) *** Exception: Prelude.Enum.succ{Int}: tried to take `succ' of maxBound

2012-08-11 11:56:58
ねこはる @halcat0x15a

(maxBound :: Int) + 1 -2147483648

2012-08-11 11:57:13
ssmylh @ssmylh

@halcat0x15a @xuwei_k では、EnumLowのminmaxpredとかminmaxsuccはScalaz独自なんですね。

2012-08-11 11:58:41
ねこはる @halcat0x15a

まあ、いつか返答が来るのでは。 2ヶ月後だったりもしますし!

2012-08-11 11:58:46
ねこはる @halcat0x15a

@ssmylh @xuwei_k そうみたいですね。 haskellとは全く違うこと書いてます。

2012-08-11 12:02:34
Kenji Yoshida @xuwei_k

@halcat0x15a @ssmylh Haskellのenumにはmaxとかなくて、enumとは別にBoundedという別のtypeclassがあるけど、scalaz7の場合 Option 型でmaxとminのメソッドがenumにくっついてて、なぜこうなってるのかという

2012-08-11 12:06:07
Kenji Yoshida @xuwei_k

error投げるのが仕様なら、それはそれでありなきがするけど、もしそうなら EnumLaw か、もしくは、DoubleとFloatのminとmaxの値を修正するべきな気もするし https://t.co/O71LvDe5

2012-08-11 12:10:24
ねこはる @halcat0x15a

@xuwei_k @ssmylh なんでOptionなんでしょうね。 None返すものがあるのかな。

2012-08-11 12:14:17
ねこはる @halcat0x15a

Scalazのコード見る限りは例外投げる仕様とかありえないだろうし、succ,predがOption返すようになると使い辛いし・・・・

2012-08-11 12:14:53
Kenji Yoshida @xuwei_k

Enum[Int] の場合だったら max が Some なのはコンパイル時に決まるわけで、HaskellみたいにBounded class作らずに enum に max っていうメソッドがあるのも謎。なにか理由あるのかなんなのか

2012-08-11 12:16:45
ねこはる @halcat0x15a

@xuwei_k おお、本当だ。 Boundedがないのは謎ですね。

2012-08-11 12:22:46
Kenji Yoshida @xuwei_k

#scalaz 7 の enum」をトゥギャりました。 http://t.co/gwi8zK4N

2012-08-11 12:22:57
ssmylh @ssmylh

おぉ。BigIntとBigDecimalのminとmaxはNoneなんだ。

2012-08-11 12:24:35
ねこはる @halcat0x15a

DoubleとかFloatにEnumはいらない気がするのだけど。

2012-08-11 12:24:53
ssmylh @ssmylh

@halcat0x15a それ、思いました。動かすまでsuccとpredが何を返すか想像できませんでした。

2012-08-11 12:26:32
ねこはる @halcat0x15a

@ssmylh ですよね。 整数のようなものだけでいい気がします。

2012-08-11 12:28:01
ねこはる @halcat0x15a

Scalazは数値系を充実させて、整理して欲しい。 NumとかIntegralとかFractionalとか。

2012-08-11 12:30:15