Concurrent Clean : pipe line operator

[id:lethevert:20061201:p1]のpipe line operatorを定義。

(|>) infixl 0
(|>) x f ==: f x

class (|>$) infixl 0 a b :: !*a !b -> *a

instance |>$ File Char
instance |>$ File Int
instance |>$ File Real
instance |>$ File {#Char}

(|>$)オペレータは、以前は(++>)オペレータとしていたものの拡張で、左辺に出現した型にあわせてデフォルトの動作を定義するもの。
一意性型属性は、classの型変数には付けられないようで、仕方なくメンバ関数の方につけています。
ただ、以前のオペレータに比べて、タイプしにくくなったような気が。