> (define (apply-2-3 func)
(func 2 3))
> (let ((func0 +)
(func1 foo))
(list (apply-2-3 func0)
(apply-2-3 func1)))
(5 9)
apply-2-3 は関数 func を引数としてとり、
それに 2 3 を渡して評価させようというものです。
このように関数を引数としてとる関数のことを 高階関数
と呼びます。
関数の合成も例として考えられるでしょう。 g(x) = x * x があったとします。 h(x) = g(f(x)) = f(x) * f(x) とします。 このとき、f をどんな関数でもよいとすると、h という x に関する関数は f を引数とする関数にもなっているわけです(h = G(f) = f o g)。 この様に、高階関数は色々な所に現われていました。
99.10.7/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp