- 高階関数 first order function
関数を返す関数
いよいよ、関数型言語の佳境。
text p.56-60
f m n = m + n
と定義し、さらに、
g = f mと定義する。
すると、
g 1 = 3+ 1
g 2 = 3+2
となる。
名前のない関数、本来は、これが関数の定義である。
(fn x=>x+1)3*10; (->40)
val plusone = fn x=>x+1;
として、名前をつけ、
plusone 3 *10を実行してみよ。同じ結果が得られる。
summationの例をパターンマッチングで書くと、
fun summation f 1 = f 1
| summation f n = f n + summation f (n-1);
1+2+3+4+...+10
1^2 + 2^2 +3^2 + +10^2
1^3 + 2^3 + 3^3 + 10^3
をsummationと関数式を使って、それぞれ書いてみると、
summation (fn n=>n) 10
summation (fn n=> n*n) 10
summation (fn n=> n*n*n) 10
とかける。
1回しか使わない場合、いちいち関数に名前をつけずにすむので重宝する。
最終更新:2007年03月10日 21:11