灯下 登录
计算机科学 / SICP / 4.4.4 Implementing the Query System

Exercise 4.73 · 习题

Exercise 4.73: Why does flatten-stream
use delay explicitly? What would be wrong with defining it as follows:

(define (flatten-stream stream)

(if (stream-null? stream)

the-empty-stream

(interleave (stream-car stream)

(flatten-stream

(stream-cdr stream)))))

练习 4.73:为什么 flatten-stream 要显式使用 delay?按如下方式定义它会有什么问题?

(define (flatten-stream stream)
(if (stream-null? stream)
the-empty-stream
(interleave (stream-car stream)
(flatten-stream
(stream-cdr stream)))))

Racket #lang sicp
(define (flatten-stream stream)
 (if (stream-null? stream)
 the-empty-stream
 (interleave (stream-car stream)
 (flatten-stream
 (stream-cdr stream)))))