# 105: (lib/Prelude.hs) instance Enum Char の定義で types do not unify [↑up](bunny_notes) - issued: 2020-06-07 - 分類: A サンプルコードが fail - status: Closed (2020-10-19) ## 概要 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 -} $$} ## 調査ログ ## 2020-10-19 書き間違いが原因だった。 $${ --- 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 を追加。