11 Stimmen

Erzwungene Striktheit für Listen in Haskell

Ich habe einen sehr zeitaufwändigen Algorithmus erstellt, der eine kurze Zeichenkette als Ergebnis liefert. Wenn ich versuche, sie zu drucken (über putStrLn), erscheint sie Zeichen für Zeichen auf dem Bildschirm. Ich habe verstanden, warum das passiert ist, und ich habe versucht, die Auswertung der Zeichenfolge vor dem eigentlichen Druck zu erzwingen.

myPrint !str = putStrLn str

Aber das hilft nur sehr wenig. Als ich das Programm im Debug-Modus laufen ließ, bemerkte ich, dass die !str-Auswertung nur für das erste Zeichen erzwungen wurde.

Weiß jemand, warum das so ist, und wie man damit umgehen kann?

2voto

Curious George Punkte 21
seqList :: [a] -> ()
seqList [] = ()
seqList (x:xs) = strictList xs

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X