【发布时间】:2013-02-05 11:04:25
【问题描述】:
in-range 在 Racket 中返回一个流。 racket/stream 库中的流定义了很多函数。但是我不能在它们上使用来自srfi/41 的函数stream-take。我想执行
(stream-take 5 (in-range 10))
它抱怨stream-take: non-stream argument。
(stream->list (stream-cons 10 (in-range 10)))
上面抛出以下错误:
stream-promise: contract violation;
given value instantiates a different structure type with the same name
expected: stream?
given: #<stream>
但是:
(stream->list (stream-cons 10 stream-null)) ;; works
(stream->list (stream-cons 10 empty-stream)) ;; works
两者都可以正常工作。
以上是否意味着来自racket/stream 和srfi/41 的流不兼容?如何在不重新发明轮子的情况下从racket/stream 流中获取 10 个项目?
球拍 5.3.3
【问题讨论】: