Ich habe eine FunktionVerwirrung hinsichtlich Trägheit
myLength = foldl (\ x _ -> x + 1) 0
die um 10^6 Elemente mit Stapelüberlauf mit dem Eingang fehlschlägt (myLength [1..1000000] ausfällt). Ich glaube, das liegt an der Verdunkelung, da, wenn ich foldl durch faltl 'ersetze, es funktioniert. So weit so gut.
Aber jetzt habe ich eine andere Funktion eine Liste zu umkehren:
myReverse = foldl (\ acc x -> x : acc) []
, die die faulen Version foldl (statt von foldl ') verwendet
Wenn ich myLength . myReverse $ [1..1000000]
tun. Diesmal funktioniert es gut. Ich verstehe nicht warum Foldl für den späteren Fall und nicht für den ehemaligen Fall funktioniert?
Um zu klären, hier myLength foldl verwendet‘, während myReverse foldl verwendet
mein Schlechter !! korrigierte es –
Ich bekomme eine Stapelüberlauf Ausnahme für beide Fälle. – dave4420
Nein, das ist nur das Logo an der Spitze der Website, die Sie betrachten;) (Ich bekomme keine Ausnahme für myReverse) – Artelius