Concurrent Clean : モデルとビューの関連付け
一意型を含んだ関数をモナドで再構成する方法としては、[id:nobsun:20060907:monadicIO]で説明されている方法があるのだけれど、これはモデルの側の記述が自然にならないのでちょっと嫌。(最大の原因は、シノニム型を型クラスのインスタンスとして宣言できないため)
なので、一意型の変数を直接渡すことになるのだけれど、
mapping cgi
= model1 cgi >>= \m1 =
model2 >>= \m2 =
return [view1 m1, view2 m1 m2]
という感じに書くのか。
'>>'が定義できれば、次の書き方がありえるが、残念ながら、Cleanで'>>'は既に使われている。
mapping cgi
= cgi >>
model1 >>= \m1 =
model2 >>= \m2 =
return [view1 m1, view2 m1 m2]
'>>\'などという新しい演算子を定義して、
mapping cgi
= cgi >>\
model1 >>= \m1 =
model2 >>= \m2 =
return [view1 m1, view2 m1 m2]
という書き方もありだが・・・