Concurrent Clean : 副作用と一意型(4)

久しぶりに[id:lethevert:20060222:p2]の続きです。
一意型を使うアイデアとして、モナドスタイルと高階関数の2通りのスタイルを試してみましたが、だいぶ考えが整理されてきたというか、手駒が増えてきたというか。
だんだん、2種類のアプローチを融合したスタイルができあがってきました。上の便利関数は、その方向性に沿ったものです。
で、下は、実験的な試み。ファイルオープンやクローズも含めて、この新しいスタイルに編みこめるかを考えてみました。無名関数を使うことで、柔軟に多段階の組み合わせが可能です。

Start w
    = w --> stdio
        --> \(f,w) = w --> fclose (f --> ([0..10] --> map fwritei
                                                  --> reelU))
                       --> snd