在計算機科學中,柯里化(Currying)是把接受多個參數的函式變換成接受一個單一參數(最初函式的第一個參數)的函式,並且返回接受餘下的參數且返回結果的新函式的技術。這個技術由 Christopher Strachey 以邏輯學家 Haskell Curry 命名的,儘管它是 Moses Schnfinkel 和 Gottlob Frege 發明的。
基本介紹
- 中文名:柯里化
- 外文名:Currying
- 套用領域:計算機科學等
- 類型:技術
介紹,動機,
介紹
在直覺上,柯里化聲稱“如果你固定某些參數,你將得到接受餘下參數的一個函式”。所以對於有兩個變數的函式yx,如果固定了 y = 2,則得到有一個變數的函式 2x。
在理論計算機科學中,柯里化提供了在簡單的理論模型中比如只接受一個單一參數的lambda 演算中研究帶有多個參數的函式的方式。
動機
Currying提供了一種處理帶有多個參數的函式的方法,並在函式可能只占用一個參數的框架中使用它們。例如,某些分析技術只能套用於具有單個參數的函式。實際功能經常需要更多的論據。 Frege表明,為單個參數情況提供解決方案就足夠了,因為可以將具有多個參數的函式轉換為單參數函式鏈。這種轉變被稱為currying。在數學分析或計算機編程中通常可能遇到的所有“普通”函式都可以進行計算。但是,有些類別無法進行干擾;允許currying的最一般類別是封閉的monoidal類別。
一些程式語言幾乎總是使用curried函式來實現多個參數;值得注意的例子是ML和Haskell,在這兩種情況下,所有函式都只有一個參數。此屬性繼承自lambda演算,其中多參數函式通常以curry形式表示。
Currying與部分套用有關,但與部分套用不同。在實踐中,閉包的編程技術可以用於通過在具有curried函式的環境中隱藏參數來執行部分套用和一種currying。