Ich habe versehentlich meinen Beitrag gelöscht, aber ich wiederhole diese Frage zur Klarstellung.Bestätigung der faulen Bewertung
Wenn ich eine Funktion:
const x = 1
Wenn ich frage Haskell:
const (1/0)
Es wird 1
zurück, weil lazy evaluation eigentlich nicht berechnen, was 1/0
ist, nicht wahr? Es muss nicht.
Ja, das ist, was Haskell nicht-semantische Garantien garantiert. –
Beachten Sie, dass "1/0" keine Ausnahme auslöst - es gibt nur einen speziellen "Double" -Wert zurück. Aber wenn Sie es in etwas ändern, das eine Ausnahme auslöst (z. B. "Fehler" stirbt "), erhalten Sie immer noch" 1 "als Antwort. – MathematicalOrchid
Natürlich ist "const" ein schlechter Name dafür - man könnte es "const1" nennen, und es könnte tatsächlich als const1 = const 1 definiert werden. Der Name 'const' sollte, wie die meisten Prelude-Funktionen, für nichts anderes verwendet werden. – leftaroundabout