这与 SICP 的第 3.5 章有关,其中正在讨论流。这个想法是:
(cons-stream 1 (display 'hey))
不应该评估 cons-stream 的第二部分,所以它不应该打印“hey”。这确实发生了,我得到以下输出:
嘿(1 . #< 承诺 >)
所以我的结论是延迟没有作为一种特殊的形式来实现?还是我做错了什么?我使用以下实现:
(define (cons-stream a b)
(cons a (delay b)))
延迟是默认的 R5RS 实现。这是实施中的错误,还是我没有正确或理解它?