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]

という書き方もありだが・・・