>617
hGetContents が遅延 IO を実現しているのは、副作用うんぬんとは関係がな
い。というか、遅延しない IO にも副作用が必要なわけで、その書き方だと
「副作用に頼らずに IO を実現したい」と言っているように見える。

どうも unsafeInterleaveIO を探しているという話に思えるんだけど、どうですか。

もしくは Streams か SSC を見てみてもいいかも。 Streams にそういう操作が定義されていたかどうかは覚えていないが。