Concurrent Clean : 型と演算子
型があるということは、プログラミングの上での制約になることもあるのだけれど、型のおかげでプログラミングの柔軟性が向上することもある。Cleanの演算子は1つの典型だ。
Cleanの演算子は、使える文字の種類に制限がない。なので、次のような演算子を定義することができる。
(startsWith) infix 9 :: !String !String -> Bool
でこれを使うことで、次のような式が書ける
trim str startsWith prefix
ただし、trimは次のような関数である。
trim :: !String -> !String
ここで、型によって、startsWithが演算子であることが分からなければ、上の式をパースして正しい構文木を作ることすらできない。この式は、次のように解釈される。
(startsWith) (trim str) prefix
つまりこの式は、strをtrimしてから、その先頭がprefixで始まるかどうかをテストしているのである。