• 高階関数 first order function
関数を返す関数

いよいよ、関数型言語の佳境。

text p.56-60

f m n = m + n
と定義し、さらに、
g = f mと定義する。
すると、
g 1 = 3+ 1
g 2 = 3+2
となる。

  • 関数式 text p.61
名前のない関数、本来は、これが関数の定義である。

(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回しか使わない場合、いちいち関数に名前をつけずにすむので重宝する。

名前:
コメント:

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2007年03月10日 21:11