Ich stieß auf etwas, das ich neugierig finde, während ich mit der interaktiven Haskell-Eingabeaufforderung (ghci) herumspielte. Der folgende Code 7.0.4Typ Zweideutigkeit mit Zahlen
[minBound..1]
wirft die folgende Ausnahme unter GHCI laufen:
<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]
Ich weiß, dass die oben Schreiben als [minBound..1 :: Int] würde deutlich machen, dass ' 1 'hier soll ein Int sein, aber meine Frage ist, wo liegt die Zweideutigkeit? '1' könnte als Int, Integer, Float oder Doppel, aber keiner von ihnen außer Int gehören zur Bounded Klasse interpretiert werden. Gibt es also eine andere Klasse, die literal 1 könnte als Maskerade? Wenn nicht, was dann?
Gute Antwort, danke; Ich machte Annahmen darüber, wie Haskells Typinferenz funktioniert, jetzt weiß ich es besser – Aky