ML (プログラミング言語)
MLの関数の定義は
と書く。Haskellと同様なパターンマッチングがある。複数のパターンはガード記法 | をセパレータとする。
例として階乗を求めるプログラムを以下に示す。
MLでの関数の評価は関数が定義されたときに行われる。このためMLでは関数定義の順序が無視できない。例として
のような関数がある場合は必ず b の方が先に定義されていないといけない。しかしこの場合はお互いを呼ぶような再帰呼び出しの実装が不可能である。そこでMLではそのような関数のために二つの関数を and でつなぐことによってこれを実装することができる。 例を挙げると
これは take が与えられたリストの奇数番目の要素を返し、skip が偶数番目の要素を返す関数である。