higher order function
関数を引数に取ったり,関数を結果として返すような関数.数学では汎関数と呼ばれることもある.例えば次のように定義される関数fは,2つの引数 g, a を取り,a に g を2回適用した結果を与える.
f(g,a) = g(g(a))
Common LispやScheme, ML, Haskellといった関数型プログラミング言語では高階関数が多用される.
上の関数 f の定義をSchemeで書くと以下のようになる.
(define (f g a) (g (g a))
Common Lispやemacs Lispでは以下のとおり
(defun f (g a)(funcall g (funcall g a)))
ML(Standard ML)では以下の通り.
fun f (g, a) = g (g a);
R言語では以下のとおり
f <- function(g, a)g(g(a))
Rubyでは
def f(g,a)
g.call(g.call(a))
end
Pythonでは
def f(g,a): g(g(a))