高階函數

數學計算機科學中,高階函數是至少滿足下列一個條件的函數

  • 接受一個或多個函數作為輸入
  • 輸出一個函數

在數學中它們也叫做算子(運算符)或泛函微積分中的導數就是常見的例子,因為它映射一個函數到另一個函數。

無類型lambda演算,所有函數都是高階的;在有類型lambda演算[註 1]中,高階函數一般是那些函數型別包含多於一個箭頭的函數。在函數式編程中,返回另一個函數的高階函數被稱為Curry化的函數。

一般性例子

在很多函數式編程語言中能找到的map函數是高階函數的一個例子。它接受一個函數f作為參數,並返回接受一個列表並應用f到它的每個元素的一個函數。高階函數的其他例子包括:

範例

這是一個Python 腳本語言的例子,其中函式g()有一引數以及回傳一函數.這個例子會列印100 ( g(f,7)= (7+3)×(7+3) ).

def f(x):
    return x + 3

def g(function, x):
    return function(x) * function(x)

print g(f, 7)

下列是Scheme語言的例子,函數g()有一引數以及回傳一函數。函數a()取得一值並加上7,再回傳,(例如a(3)=10)。

(define(g x)
  (lambda (y) (+ x y)))
(define a (g 7))
(display (a 3))

注釋

  1. ^ 大多數函數式編程語言都從中演化而來

參見