SICP:非严重或懒惰的``'',它如何工作



以下是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)))

确实会导致foocons的调用中,这是一种非懒惰或严格的行为。

因此,我们如何编写懒惰或非图片版本的cons,它也不是特殊表格

节的前提是,代码是由上一节的懒惰评估者评估的4.2.2。 - Molbdnilo,在17年3月2日,7:49。

相关内容

  • 没有找到相关文章

最新更新