以下是SICP书4.2.3节的摘录,作为懒惰列表:
通过懒惰的评估,流和列表可以相同,因此 无需特殊表格或单独的列表和流操作。 我们要做的就是安排问题,以便
cons
是非图片。 实现此目的的一种方法是扩展懒惰的评估者以允许 对于非图案的原语,并将cons
作为其中之一实现。 更简单的方法是回忆(第2.1.3节),没有基本 需要实现cons
作为原始的。相反,我们可以 表示对作为过程:(define (cons x y) (lambda (m) (m x y))) (define (car z) (z (lambda (p q) p))) (define (cdr z) (z (lambda (p q) q)))
问题:我看不到上述cons
的定义如何实现懒惰或非图案行为。例如,以下呼叫cons
,
(define (foo) '(1 2 3))
(define bar (cons 'a (foo)))
确实会导致foo
在cons
的调用中,这是一种非懒惰或严格的行为。
因此,我们如何编写懒惰或非图片版本的cons
,它也不是特殊表格。
节的前提是,代码是由上一节的懒惰评估者评估的4.2.2。 - Molbdnilo,在17年3月2日,7:49。