In Haskell,Typ konnte nicht ‚Integer -> t‘ erwartet übereinstimmen mit den tatsächlichen Typ ‚Bool‘
Das perfekt funktioniert gut: (mod 9) 7
. Es ergibt das erwartete Ergebnis: Rest, wenn 9 durch 7 geteilt wird().
Ähnlich funktioniert das auch: (mod 9) 9
. Es gibt zurück.
Dies führte mich zu der Annahme, (mod 9 == 0) 9
sollte True
zurückgeben. Dies war jedoch nicht der Fall: Stattdessen wurde ein Fehler angezeigt.
den Fehler:
<interactive>:62:1: error:
• Couldn't match expected type ‘Integer -> t’
with actual type ‘Bool’
• The function ‘mod 9 == 0’ is applied to one argument,
but its type ‘Bool’ has none
In the expression: (mod 9 == 0) 9
In an equation for ‘it’: it = (mod 9 == 0) 9
• Relevant bindings include it :: t (bound at <interactive>:62:1)
Bitte helfen Sie mir zu verstehen, warum (mod 9 == 0) 9
nicht True
zurückkehren würde.
P.S .: Ich bin überzeugt, dass meine Verwendung von "Return" in Haskells Kontext fehlerhaft ist. Wie auch immer, ich fange gerade erst an, also bitte entschuldige mich. (Wäre schön, wenn Sie mich korrigieren könnte, wenn ich bin, ja falsch.)
Warum sollte es? 'mod 9 :: Integral a => a -> a', während' 0 :: Num a => a'. – chepner
Sie scheinen zu versuchen, '==' und 'mod 9' zu komponieren, was wie folgt aussehen würde: ((== 0). (Mod 9)) 9 '. – chepner
Verstanden! Ich fühle mich jetzt dumm. Auf der anderen Seite scheint Haskells Typsystem so nützlich zu sein, um Code zu verstehen. Vielen Dank. Soll ich diese Frage löschen? – spideyonthego