Concurrent Clean : タプル

多値関数([id:lethevert:20060210:p1])に関連して、ここで([id:lethevert:20060208:p1])$演算子を定義したが、これは、タプルに拡張できる。

($) infixr 0 //:: (a -> z) a -> z
($) f a :== f a

($$) infixr 0 //:: (a b -> z) (a,b) -> z
($$) f (a, b) :== f a b

($$$) infixr 0 //:: (a b c -> z) (a,b,c) -> z
($$$) f (a, b, c) :== f a b c

($$$$) infixr 0 //:: (a b c d -> z) (a,b,c,d) -> z
($$$$) f (a, b, c, d) :== f a b c d

($$$$$) infixr 0 //:: (a b c d e -> z) (a,b,c,d,e) -> z
($$$$$) f (a, b, c, d, e) :== f a b c d e

本当は、$, $$, $3, $4, $5としたかったが、Cleanのシンボル規則では無理なようだ。