小编Arc*_*520的帖子

applicative-order/call-by-value 和 normal-order/call-by-name 的区别

背景

我正在根据在线课程学习 sicp,但对它的讲义感到困惑。在讲义中,applicative order 似乎等于 cbv 和 normal order 等于 cbn。

困惑

但是wiki指出,除了求值顺序(从左到右,从右到左,或者同时),applicative order和cbv是有区别的:

与按值调用不同,应用顺序评估在应用函数之前尽可能地减少函数体内的术语。

我不明白减少是什么意思。在进入函数计算之前,应用顺序和 cbv 都不会获得变量的确切值。

而对于正常的顺序和cbv,根据wiki,我更加困惑。

相比之下,按名称调用策略不会在未应用的函数体内求值。

我猜这是否意味着正常顺序会在未应用的函数体内进行评估。怎么会这样?

  1. 有人能给我一些关于四种策略的更具体的定义吗?
  2. 有人可以使用任何编程语言为每种策略展示一个示例。

非常感谢?

evaluation scheme programming-languages sicp operator-precedence

3
推荐指数
1
解决办法
1268
查看次数