Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure:在多个(可能无限)序列上迭代_Clojure_Sequence_Infinite_Lazy Sequences - Fatal编程技术网

Clojure:在多个(可能无限)序列上迭代

Clojure:在多个(可能无限)序列上迭代,clojure,sequence,infinite,lazy-sequences,Clojure,Sequence,Infinite,Lazy Sequences,我有两个无限序列。我想在每一步中各走一步。这样做的惯用方式是什么?换句话说,假设有一个有限的、已实现的序列iss,它包含惰性的、无限的序列。如何打印出每个无限序列的第一个元素,然后是每个无限序列的第二个元素,依此类推?可能是这样吗 user=> (def seq1 (iterate inc 1)) #'user/seq1 user=> (def seq2 (iterate inc 10)) #'user/seq2 user=> (take 10 (partition 2 (in

我有两个无限序列。我想在每一步中各走一步。这样做的惯用方式是什么?换句话说,假设有一个有限的、已实现的序列iss,它包含惰性的、无限的序列。如何打印出每个无限序列的第一个元素,然后是每个无限序列的第二个元素,依此类推?

可能是这样吗

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))
也许是这个

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))
我会使用一个简单的地图向量。它将向量的应用程序的惰性序列返回给所有序列的第一个元素,然后返回第二个元素,依此类推。除非你强制实现,否则什么都不会被映射

自己尝试一下注意,范围返回一个无限长的惰性序列:

(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])
我会使用一个简单的地图向量。它将向量的应用程序的惰性序列返回给所有序列的第一个元素,然后返回第二个元素,依此类推。除非你强制实现,否则什么都不会被映射

自己尝试一下注意,范围返回一个无限长的惰性序列:

(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])

看起来不错-我最后编写了一个“flip”函数,它将一个维度为Xinfinity的序列转换为另一个无穷大的序列:defn flip[seq of seqs]cons-map-first-seq-of-seqs-lazy-seq-flip-map-rest-seq-of-seqs-and-interactive-to-that很容易。看起来不错-我已经编写了一个“flip”函数,它将一个维度为Xinfinity的序列转换成另一个无穷大的序列:defn-flip[seq of-seqs]cons映射seqs中的第一个seq lazy seq flip映射seqs中的其余seq-遍历它很容易。