中置記法

好きな中置演算子を定義できるのも,この手の言語の醍醐味である(と思う)。C++を初めてさわったとき演算子オーバーロードができて,うひゃーうひゃーいったのと似たようなもの。一方でこの手の言語は,自由に演算子の名前を決められるので,これまたあひゃーうひょーなのである。
集合操作にいちいち関数おいてると,Sch*m*みたいになって鬱になってくるので適当に演算子を追加してしまおうとおもって,unionに++,diffに--,interに**をと思ったところで実は**って,累乗じゃん。。。困った困った。あいてる記号ないかな。。。で,それっぽい(どれっぽい?)@@とか。いい加減だなぁ。<+>, <->, <*>みたいな方がいいか?
ところで,演算子ってどこまでできるんだろうか。どうも,既存の演算子に使われている文字の組み合わせはOKっぽい。じゃぁあれか,@^^@演算子なんてのもOKなんだな。

# let (@^^@) x y = x ^ " @^^@ " ^ y;;
val ( @^^@ ) : string -> string -> string = <fun>
# "hoge" @^^@ "fuga";;
- : string = "hoge @^^@ fuga"
#

あほくさ。
ちなみに,新たに作った演算子の優先順位は比較演算子(=とか<とか)と同じで,左結合らしい。ということですよね?