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