有人能帮我更好地理解如何编写流吗?
我知道流是一系列无限的值,编程时我学习的方法是将它们表示为一个惰性求值函数,当调用时会产生一个二元组:(1) 序列中的第一个元素和 (2) 代表第二个到无穷多个元素的流的惰性求值函数。
例如:
(define powers-of-two
(letrec ([f (lambda (x) (cons x (lambda () (f (* x 2)))))])
(lambda () (f 2))))
我理解这里只是在生成2的幂,并且要访问它们,例如调用
(car(powers-of-two))
会得到2
,调用(car((cdr(powers-of-two))))
会得到4
现在我正在尝试编写一个名为red-blue
的流,它在red
和blue
字符串之间交替,但是我有点困惑如何构建它。