fun構文
fun len [] = 0 | len (h::t) = 1 + len t;
この書き方は、どうも納得いかない。
- は関数適用よりも結合度が弱いので、(h::t)のように括弧が必要になるのはわかるが、fun構文の中だけ特別扱いしても良いのではないかと思う。先頭は関数名に決まっているのだから。
というか、パターン毎に同じ関数名を書くこと自体が無駄ではないか?
fun len [] = 0 | h::t = 1 + len t;
と書ける方が良いと思うのだが。
演算子の定義の場合、毎回"op"と書くのは異様な感じがする。
fun op @ (0,b) = b | op @ (a,b) = a * b;