In GHCi Geben iHaskell Liste der Liste Typ Fehler
let xs = [1, 'a']
es den Fehler beklagt sofort:
<interactive>:28:11:
No instance for (Num Char) arising from the literal ‘1’
In the expression: 1
In the expression: [1, 'a']
In an equation for ‘xs’: xs = [1, 'a']
Allerdings, wenn ich
let xs = [1, [1, 1]]
geben Sie nur übergeben. Und es beschwert sich, wenn ich versuche xs zu drucken:
<interactive>:5:1:
No instance for (Num [t0]) arising from a use of ‘it’
In a stmt of an interactive GHCi command: print it
Ich denke, Haskell eine statische Art Sprache ist so jede Art Fehler sollte in der Kompilierung gefangen werden. Ich frage mich, warum die oben genannten 2 Fehler zu unterschiedlichen Zeiten abgefangen werden?
Warum gilt das nicht für eine mögliche "Num Char" -Instanz? –
@ReidBarton Gute Frage! Ich bin mir da eigentlich nicht sicher. Ich würde vermuten, dass GHC bei der Auflösung der Instanz es ablehnt, Beweise für monomorphe Einschränkungen zu finden. aber das ist nur eine Vermutung. –
Sie könnten eine 'Num Char'-Instanz basierend auf der' Enum Char'-Instanz definieren. Die gleiche Argumentation würde gelten, aber die Instanz ist hier nicht enthalten. –