若f ::甲 - >乙 - > c是咖喱然後uncurry(f)可被定義爲:Uncurry n個參數的函數咖喱在javascript
uncurry ::(甲 - >乙 - >Ç ) - >((a,b) - > c)
我試圖在javascript中實現上述功能。我的下面的實現是正確的還是通用的,還是有更好的解決方案?
const uncurry = f => {
if (typeof f != "function" || f.length == 0)
return f;
return function()
{
for (let i = 0; i < arguments.length; i++){
f = f(arguments[i]);
}
return f;
};
}
const curry = f => a => b => f(a, b);
const curriedSum = curry((num1, num2) => num1 + num2);
console.log(curriedSum(2)(3)); //5
console.log(uncurry(curriedSum)(2, 3)); //5
這是你在過去幾天的第四或第五個問題。我想我很好奇,你爲什麼要手動完成所有這些*而不是使用Ramda?更不用說,他們中的所有*都可以通過查看Ramda源代碼輕鬆回答。 –