Haskell の対話型プロンプト (ghci) をいじっていると、気になるものに出くわしました。次のコードは ghci 7.0.4 で実行されます
[minBound..1]
次の例外をスローします。
<interactive>:1:12:
Ambiguous type variable `t0' in the constraints:
(Num t0) arising from the literal `1' at <interactive>:1:12
(Enum t0) arising from the arithmetic sequence `minBound .. 1'
at <interactive>:1:1-13
(Bounded t0) arising from a use of `minBound'
at <interactive>:1:2-9
Probable fix: add a type signature that fixes these type variable(s)
In the expression: 1
In the expression: [minBound .. 1]
In an equation for `it': it = [minBound .. 1]
上記を [minBound..1 :: Int] と書くと、ここで '1' がIntであることを意味することが明確になることはわかっていますが、私の質問は、あいまいさはどこにあるのでしょうか? '1' はInt、Integer、Float、またはDoubleとして解釈できますが、Int以外のこれらはいずれもBoundedクラスに属しません。では、リテラル 1 がなりすますことができる別のクラスはありますか? そうでない場合は、何ですか?