0
簡單任務:我需要的是將參數列表應用於curried函數的函數。將參數列表應用於curried函數
比方說,我們的功能就是著名的add
一個:
fun add a b = a + b;
現在我想是應用列表(比如[1, 5]
)到add
功能。這會看起來像:
apply add [1, 5];
這似乎比我想象的更難。我嘗試:
fun apply f ps = foldl (fn (p, f') => f' p) f ps;
但這得到這個熱鬧可讀的錯誤信息:
Error: operator and operand don't agree [circularity]
operator domain: 'Z * ('Z -> 'Y) -> 'Z -> 'Y
operand: 'Z * ('Z -> 'Y) -> 'Y
in expression:
foldl (fn (p,f') => f' p)
現在,什麼是錯我的執行? SML/NJ甚至可能嗎?
歡呼和感謝提示和答案。
是的,我以某種方式懷疑這一點。但是,我仍然認爲必須有一種方法來完成任務...... – scheffield
@scheffield您的具體情況可以是硬編碼的,但這不是很有用。我相信你可以用像Idris這樣的類型系統來解決一般問題 - 你需要將函數的長度與列表的長度相匹配,我認爲*會或多或少地需要一個圖靈完整類型系統。當然,我也可能會說出自己的底線(雙關語意)。 – molbdnilo