>>347
入力には正格 ByteString、出力は遅延 ByteString を用います。そういう風に使えてないとなると、あなたのコードはまだまだアマチュアなのです。
http://d.hatena.ne.jp/kazu-yamamoto/searchdiary?of=5&;word=%C3%D9%B1%E4

まだまだアマチュアなんだけど、347のケースで考えて理解を整理しました。こんな感じですかね?

サーバー内部では、クライアントからのリクエストはStrictなデータで保持されていて、対応するレスポンスはLazyなデータとして持っている。サーバーは必要なタイミングでLazyなレスポンスデータを出力する(その時点でStrictに変換される)。

もしレスポンスをStrictなデータにしたなら、場合によっては無限に膨れ上がる。
(なるほど、Lazyはメモリを食う、は間違ってましたね)
もしリクエストをLazyにしたなら?
致命的では無いけど、若干のオーバーヘッドがあって、その分が無駄。


>>346
getterとpublic変数(フィールド?)で迷ったら、ほぼ100%getterにするけど、言いたいのは、
直接扱うか、ラップして扱うか、の違いだってことかな。
ラップしたオブジェクトをごにょごにょして、終わったらgetterで取り出す。
ファイルパスビルダーからパス文字列を作るみたいな。
ああ、なるほど、HaskellではファイルパスビルダーはLazyな文字列の値として表現できるのか。


あれ?ByteString.Lazyって、
(1) a -> ByteString.Strict と同じ?
(2) IO ByteString.Strict で実現できる?
(3) ByteString.Lazy をseq やバンパターンでしょっちゅう評価すれば、それはByteString.Strictを使ってるのと同じこと?