GrimssonG
呼ぶ側では、単純に結果のheadのlengthを評価するだけでテストしていたんですが、単純に出力するだけのものを試してみます。
lines 関数に任せて1行ごとにパーサーを走らせれば回避できる?readCSVTWin path >>= \x -> deepseq x (return ())) とかですかね>何を~total memory in use が1/3ぐらいになりました。cell = (quotedCell <|> many (noneOf ",\n\r")) >>= (\res -> return $! T.pack res)>>= で書いてある部分を do で書き換えて、全部の関数に型を明示的に書いたら、処理的には何も変更していませんが 50MB ぐらい減りましたね。Strict 拡張の有無でプロファイル結果が変わったので、それっぽいです。