Standard ML
SMLは関数型言語なので、関数を生成し処理することが容易である。これには様々な応用が考えられる。関数の数値微分もその1つである。以下のSML関数 "d" は与えられた関数 "f" の "x" における数値微分を計算する。
この関数は小さい値 "delta" を必要とする。例えば、マシンイプシロンの立方根を delta として使うことができる。
関数 "d" の型は、型 "(real -> real) -> real -> real" を持つ別の関数へ "real" を与える、というものである。このように、「関数を、必要な全ての引数より少ない数の引数を取り、さらに残りの引数を取るような関数を返す関数にする」方式をカリー化と呼ぶ。これにより、引数を一部だけ適用する(部分適用という。部分適用のことないし「ある関数をカリー化し、それに部分適用したものを返す」ことについて誤って「カリー化」と言及されていることがあるので注意する)こともできるようになる。