在Racket中,如何将流转换为列表?
我认为它是一个通用的界面,但似乎像map这样的面向列表的函数不适用于流。那么如何将它们变成列表呢?
答案 0 :(得分:4)
有一个程序:stream->list
。例如:
(define s (stream 1 2 3 4 5))
(stream->list s)
=> '(1 2 3 4 5)
确保检查documentation,有几个操作流的过程可以反映列表可用的流。
答案 1 :(得分:3)
有一个直截了当的stream->list
函数。它来自racket/stream
库,您可以看到许多其他类似列表的函数,包括stream-map
。
(但是如果您正在使用它,请注意,此库可能会比使用流更严重的性能损失。)
答案 2 :(得分:1)
除stream->list
之外,还有一个更通用的sequence->list
可将任何sequence?
转换为列表。
> (sequence->list (stream 1 2 3))
'(1 2 3)
> (sequence->list "abc")
'(#\a #\b #\c)
> (sequence->list (set 1 2 3))
'(1 2 3)