関数型プログラミング言語Haskell Part24
レス数が950を超えています。1000を超えると書き込みができなくなります。
0988960
2014/02/24(月) 19:55:26.04どうも、Int の Num クラスのインスタンス定義の negate が原因っぽい
より正確に言えば、
instance Num Int where
negate (I# x) = I# (negateInt# x)
abs n = if n `geInt` 0 then n else negate n
の negateInt# 関数がおかしいみたい(それ以外に怪しいところが見当たらない)
ただ、残念ながら negateInt# の定義が追求できなかった
ちなみに、Int32 や Int16 なども negate の定義に negateInt# を使ってるから、
たとえば以下のようになる
> -2^31 :: Int32
> -2147483648
> negate (-2^31 :: Int32)
> -2147483648
これはバグなのか仕様なのか・・・
クソ、英語をちゃんと身につけておくべきだった
バグにしろ仕様にしろ、報告できるのに
レス数が950を超えています。1000を超えると書き込みができなくなります。