我正在研究Types and Programming Languages,而 Pierce 对于按值减少策略的调用,给出了 term 的例子id (id (λz. id z))
。内部 redexid (λz. id z)
被归约为λz. id z
first,id (λz. id z)
作为第一次归约的结果,在外部 redex 归约为正常形式之前λz. id z
。
但是按值顺序调用被定义为“仅减少最外层的redex”,并且“仅当redex 的右侧已经减少为一个值时才减少redex”。在示例id (λz. id z)
中出现在最外层 redex 的右侧,并且被缩减。这与仅减少最外层redexes的规则有何关系?
“最外层”和“最里面”的答案是否仅指 lambda 抽象?所以对于 in 中的一个术语t
,λz. t
不能t
减少,但是在 redexs t
中,如果可能的话,t
减少到一个值v
,然后s v
减少?