Haskell: Warum terminiert Berechnung nicht?
-
bei dieser Liste:
[x | x <- [1 ..], x < 100]
-
Weil du bei [1 ..] kein Ende angibst?!
-
aber da steht doch "x < 100"?
-
frage zu schrieb:
aber da steht doch "x < 100"?
Schon, aber mit dem <- hebelst du doch das "normale" Haskell-Prinzip afaik aus, oder?! Dann kann er nicht mehr feststellen, ob er die Auswertung abbrechen soll oder nicht.
-
oder vielleicht ist er nicht schlau genug zu sehen, dass ab 100 die bedigung immer falsch ist?
-
Das ist keine Schleife, die abbricht, sobald die Bedingung einmal falsch ist, sondern es werden alle Elemente der Liste durchgegangen (in deinem Fall unendlich viele) und dabei nur die Elemente ausgewertet, bei denen die Bedingung wahr ist.