【发布时间】:2020-04-01 13:31:03
【问题描述】:
我在 Racket 中看到了otheranswers 的压缩功能,但它们首先不太正确(zip 应该只压缩到提供的最短序列,以便您可以使用无限流进行压缩) 并且最重要的是不是可变的,因此您一次只能压缩两个流。
我已经想通了
(define (zip a-sequence b-sequence) (for/stream ([a a-sequence]
[b b-sequence])
(list a b)))
确实可以正常工作
(stream->list (zip '(a b c) (in-naturals)))
=> '((a 0) (b 1) (c 2))
但不是可变的。我知道我可以使用define (zip . sequences) 将其定义为可变参数,但我不知道如何构建for/stream 表单。
这必须是一个宏才可行吗?
【问题讨论】: