我的一個同事給我發了一個問題如下:實施,在斯卡拉
實現上的HOF(高階函數)執行討好,你的函數的 簽名是如下:
def curry[A,B,C](f:(A,B) => C) : A => B => C
類似地,實現執行uncurrying一個函數,如下所示:
def uncurry[A,B,C](f:A => B => C): (A,B) => C
我理解currying的方式是,如果您有一個函數需要多個參數,您可以重複將函數應用於每個參數,直到得到結果。
所以沿着f:(A,B) => C
線的東西變成A => f(A,_) => f(B)
????
而且uncurrying將這個應用程序整合到一個功能如下:
f:A=>B=>C
會f(A,B)
?
也許我只是被語法這裏混淆,但將是巨大的,如果有人能指出我是缺少在這裏。
謝謝
感謝您的解釋。這是一個非常實用的例子。我只是想弄清楚編譯器如何評估表達式,比如a => b => f(a,b) –
我發佈了一個更新。請讓我知道這是否有幫助。 –
謝謝。現在更清楚了。我將此標記爲答案。 –