Принудительная строгость для списков в haskell

Я создал действительно трудоемкий алгоритм, который в результате выдает короткую строку. Когда я пытаюсь распечатать его (через putStrLn), он появляется на экране посимвольно. Я действительно понял, почему это произошло, и попытался принудительно оценить строку перед фактической печатью.

myPrint !str = putStrLn str

Но это очень мало помогло. Когда я запускал программу в отладке, я заметил, что! Str принудительно вычисляет только первый символ.

Кто-нибудь знает, почему это так и как с этим бороться?

11
задан hammar 30 September 2011 в 19:19
поделиться