複製鏈接
請複製以下鏈接發送給好友

柯里化

鎖定
在計算機科學中,柯里化(Currying)是把接受多個參數的函數變換成接受一個單一參數(最初函數的第一個參數)的函數,並且返回接受餘下的參數且返回結果的新函數的技術。這個技術由 Christopher Strachey 以邏輯學家 Haskell Curry 命名的,儘管它是 Moses Schnfinkel 和 Gottlob Frege 發明的。
中文名
柯里化
外文名
Currying
應用領域
計算機科學等
類    型
技術

目錄

柯里化介紹

在直覺上,柯里化聲稱“如果你固定某些參數,你將得到接受餘下參數的一個函數”。所以對於有兩個變量的函數yx,如果固定了 y = 2,則得到有一個變量的函數 2x。
理論計算機科學中,柯里化提供了在簡單的理論模型中比如只接受一個單一參數的lambda 演算中研究帶有多個參數的函數的方式。

柯里化動機

Currying提供了一種處理帶有多個參數的函數的方法,並在函數可能只佔用一個參數的框架中使用它們。例如,某些分析技術只能應用於具有單個參數的函數。實際功能經常需要更多的論據。 Frege表明,為單個參數情況提供解決方案就足夠了,因為可以將具有多個參數的函數轉換為單參數函數鏈。這種轉變被稱為currying。在數學分析或計算機編程中通常可能遇到的所有“普通”函數都可以進行計算。但是,有些類別無法進行干擾;允許currying的最一般類別是封閉的monoidal類別 [1] 
一些編程語言幾乎總是使用curried函數來實現多個參數;值得注意的例子是ML和Haskell,在這兩種情況下,所有函數都只有一個參數。此屬性繼承自lambda演算,其中多參數函數通常以curry形式表示。
Currying與部分應用有關,但與部分應用不同。在實踐中,閉包的編程技術可以用於通過在具有curried函數的環境中隱藏參數來執行部分應用和一種currying。
參考資料