結果として短い文字列を生成する、非常に時間のかかるアルゴリズムを作成しました。(putStrLn 経由で) 印刷しようとすると、文字ごとに画面に表示されます。なぜそれが起こったのか理解できたので、実際の印刷の前に文字列の評価を強制しようとしました。
myPrint !str = putStrLn str
しかし、これはほとんど役に立ちません。プログラムをデバッグで実行すると、!str が最初の文字のみを強制的に評価していることに気付きました。
その理由と、これに対処する方法を知っている人はいますか?