我有几个无限的序列。我想每步走一个。这样做的惯用方法是什么?换句话说,假设有一个有限的,实现的序列iss
包含惰性无限序列。如何打印出每个无限序列的第一个元素,然后打印每个无限序列的第二个元素,依此类推?
答案 0 :(得分:3)
我使用简单的map vector
。它将vector
的懒惰序列返回到所有序列的第一个元素,然后是第二个元素,依此类推。直到你强制实现,没有任何东西被映射。
自己尝试一下(注意(range)
返回一个无限懒惰的seq):
(def lazy-zipped (map vector (range) (drop 10 (range)) (drop 20 (range))))
(take 5 lazy-zipped)
打印
([0 10 20] [1 11 21] [2 12 22] [3 13 23] [4 14 24])
答案 1 :(得分:1)
也许这个?
user=> (def seq1 (iterate inc 1))
#'user/seq1
user=> (def seq2 (iterate inc 10))
#'user/seq2
user=> (take 10 (partition 2 (interleave seq1 seq2)))
((1 10) (2 11) (3 12) (4 13) (5 14) (6 15) (7 16) (8 17) (9 18) (10 19))