【发布时间】:2016-09-24 10:10:02
【问题描述】:
我无法理解以下函数组合:
function plus_one(x) {
return x + 1;
}
function trans(f) {
return function(x) {
return 2 * f(2 * x);
};
}
function twice(f) {
return function(x) {
return f(f(x));
}
}
当我尝试评估((twice)(trans))(plus_one)(1)
这就是我得到的,假设 plus_one 是 f
f(2f(2x))=2f(2*2f(2x))=2f(4f(2x)) = 2*(4*(2 + 1)) = 24.
但是在解释器中输入它会显示它是 20。
【问题讨论】:
-
为什么是
lambda-calculus标签?
标签: functional-programming lambda-calculus