第 78 页的经验丰富的计划者对leftmost
和的定义如下lm
。
(define leftmost
(lambda (l)
(letcc skip
(lm l skip))))
(define lm
(lambda (l out)
(cond
((null? l) (quote ()))
((atom? (car l)) (out (car l)))
(else (let ()
(lm (car l) out)
(lm (cdr l) out))))))
在下一页上,它对值部分中有多个表达式进行了以下说明。例如,我不明白它如何leftmost
工作的解释(() a)
。
当 (let ...) 在其值部分有两个表达式时,我们必须首先确定第一个表达式的值。如果它有一个,我们忽略它并确定第二个表达式的值。”