我已經開始理解一些與柯里有關的示例,但我仍然不喜歡柯里化的概念,因爲我想成爲。我知道咖喱可以用來做部分評估,但我不確定它在某些情況下會如何工作。部分評估和柯魯格
我知道它是如何工作在下面的例子:
fun funkyPlus x y = x*x+y;
所以我們說,我們只能通過對X的參數,那麼它等同於以下內容:
fun funkyPlus 3 = (fn x => fn y => x*x+y)3
這最終返回
fn y => 9+y
現在,我試圖將這個想法應用於內置函數foldl
。
我知道它的代碼是:
fun foldl f b [] = b
|foldl f b (h::t) = foldl f f(h,b) t.
我的問題是,如果我們沒有所有的參數傳遞給foldl
(即我們只把它傳遞是函數('a*'b->'b)
的第一個參數)。在我給出的第一個例子中,當只有一個參數傳遞給它時,看看函數是如何工作的非常簡單。但是,如果只有一個參數傳遞給它,foldl
將無法工作。
幫助。
部分*申請*。 – 2011-02-12 01:46:57