【发布时间】:2012-10-14 03:19:24
【问题描述】:
谁能帮助我更好地理解如何编写流?
我知道流是一个无限的值序列,我学习对它们进行编程的方法是将它们表示为一个 thunk,当被调用时会产生一对 (1) 序列中的第一个元素和 (2) a thunk 表示第二个到无穷大元素的流
例如:
(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 之间交替,但我对如何构造它有点困惑
【问题讨论】:
-
你已经做到了,恭喜!查看c2.com/cgi/wiki?SieveOfEratosthenesInManyProgrammingLanguages 中的方案部分,了解 SICP 样式流的工作示例。那里只有一个宏规则,您可以在整个过程中手动应用它。