相关疑难解决方法(0)

翻译版本的`lt`,`lte`,`gt`和`gte`的好名字?

我已经在一个名为Ramda的Javascript FP库上工作了一段时间,我在命名方面遇到了一些问题.(你听说过这条旧线,对吗?"计算机科学只有两个难题:缓存失效,命名事物和一个一个错误.")

在这个库中,(几乎)多个参数的每个函数都会自动计算.这适用于大多数用例.但是有一些问题是一些函数是非交换二元运算符.问题在于,英语名称往往意味着与应用currying时所发生的不同.例如,

var div10 = divide(10);
Run Code Online (Sandbox Code Playgroud)

听起来它应该是一个将其参数除以10的函数.但实际上它将其参数分为 10,如果你看一下这个定义就很清楚了:

var divide = curry(function(a, b) {
    return a / b;
});
Run Code Online (Sandbox Code Playgroud)

所以相反的预期:

div10(50); //=> 5 // NO!!
Run Code Online (Sandbox Code Playgroud)

事实上,你得到了

div10(50); //=> 0.2 // Correct, but surprising!
Run Code Online (Sandbox Code Playgroud)

我们通过记录从人们的预期可能的差别,并创建处理这个问题divideBy,这只是flip(divide)subtractN,这是flip(subtract).但是我们还没有找到一个很好的等价函数,例如lt:

R.lt = curry(function(a, b) { 
    return a < b;
});
Run Code Online (Sandbox Code Playgroud)

或它的表兄弟lte,gtgte.

我自己的直觉就是这样

map(lt(5), [8, 6, 7, 5, 3, 0, 9]); 
//=> [false, false, false, false, …
Run Code Online (Sandbox Code Playgroud)

javascript functional-programming ramda.js

13
推荐指数
1
解决办法
2660
查看次数

仅将第二个参数绑定到 javascript 函数

var add = function(a, b) {

    return a + b;
}
var addOne =add.bind(null,1);
var result = addOne(4);
console.log(result);
Run Code Online (Sandbox Code Playgroud)

这里a的绑定值为1,b为4。

如何在不使用扩展运算符的情况下将绑定值 ie)1 分配给函数的第二个参数(...)

javascript currying

5
推荐指数
1
解决办法
2747
查看次数