instance Enum Char の宣言を The language report のようにしようとすると、 types do not unify エラー。
現状では、エラーする部分をコメントアウトしてある:
instance Enum Char where toEnum = Prim.intToChar fromEnum = Prim.charToInt {- enumFrom c = map toEnum [fromEnum c .. 1114111] enumFromThen c c' = map [fromEnum c, fromEnum c' .. lastint] where lastint :: Int lastint | c' < c = 0 | otherwise = 1114111 -}
書き間違いが原因だった。
--- a/compiler/lib/Prelude.hs +++ b/compiler/lib/Prelude.hs @@ -330,14 +330,11 @@ instance Ord Char where instance Enum Char where toEnum = Prim.intToChar fromEnum = Prim.charToInt - {- enumFrom c = map toEnum [fromEnum c .. 1114111] - enumFromThen c c' = map [fromEnum c, fromEnum c' .. lastint] - where lastint :: Int - lastint | c' < c = 0 + enumFromThen c c' = map toEnum [fromEnum c, fromEnum c' .. lastInt] + where lastInt | c' < c = 0 | otherwise = 1114111 - -} - +
test/sample305.hs を追加。