任何人都可以帮助我更好地了解如何编写流吗?
我理解一个流是一个无限的值序列,我学会编程它们的方式是将它们表示为一个thunk,当被调用时产生一对(1)序列中的第一个元素和(2)代表一个thunk第二个无限元素的流
例如:
(define powers-of-two
(letrec ([f (lambda (x) (cons x (lambda () (f (* x 2)))))])
(lambda () (f 2))))
Run Code Online (Sandbox Code Playgroud)
我在这里理解它只是产生2的幂并且访问它们,例如调用(car (powers-of-two))将导致2并且调用(car ((cdr (powers-of-two))))将导致4
现在我正在尝试编写一个称为red-blue在字符串之间交替的流red,blue但我对如何构造它有点困惑
Asu*_*awa 14
看起来你问的是如何使用thunks构建自己的自定义流,其他人已经回答过.为了以防万一,值得注意的是,Racket内置了一个流库,大多数Racketeers会将其用于流.
这是一个例子:
#lang racket
(require racket/stream)
(define reds (stream-cons "red" reds))
(define red-blues (stream-add-between reds "blue"))
;; show ten of them
(for ([i 10] [e (in-stream red-blues)])
(displayln e))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6245 次 |
| 最近记录: |