【发布时间】:2017-10-22 16:18:22
【问题描述】:
例如。假设这是我们的 JavaScript 代码:
let a = x => {
let y = x * 2
return z => x + y + z
}
let b = a(1)
let c = b(2)
我可以使用替代模型对此进行评估,还是需要环境模型?
我是这样开始的:
let c = ((x => {
let y = x * 2
return z => x + y + z
})(1))(2)
但是我需要先评估内部表达式(用1 调用),然后才能评估外部表达式(用2 调用)。但是对于替代,它总是由外而内。
这是否表明替代模型在这里不合适?还是从内向外和从外向内评估是否符合犹太教规?还是有其他的方式来看待它?
【问题讨论】:
-
如果您的代码不改变绑定的范围变量,则不需要环境模型。
-
在纯函数中,计算的顺序无关紧要。但即使是由外而内,您也必须先将应用程序操作的左侧评估为函数,然后才能应用它。
标签: javascript functional-programming computer-science lambda-calculus