如何在clojure中创建一个无限重复的序列?
我想取一个序列或向量,创建一个无限的、循环的、懒惰的版本。这就是我所尝试的:如何在clojure中创建一个无限重复的序列?,clojure,sequence,Clojure,Sequence,我想取一个序列或向量,创建一个无限的、循环的、懒惰的版本。这就是我所尝试的: (def test-seq '(1 2 3)) (take 5 (repeat test-seq)) 我得到了 ((1 2 3) (1 2 3) (1 2 3) (1 2 3) (1 2 3)) 当我想要的是 (1 2 3 1 2) 我知道这很管用 (take 5 (flatten (repeat test-seq))) 但这似乎有点不令人满意和松懈。我假设重新构造序列的成本很高,但我很可能是错的:)您正在寻找
(def test-seq '(1 2 3))
(take 5 (repeat test-seq))
我得到了
((1 2 3) (1 2 3) (1 2 3) (1 2 3) (1 2 3))
当我想要的是
(1 2 3 1 2)
我知道这很管用
(take 5 (flatten (repeat test-seq)))
但这似乎有点不令人满意和松懈。我假设重新构造序列的成本很高,但我很可能是错的:)您正在寻找
周期
:
(take 5 (cycle '(1 2 3))) ;; => (1 2 3 1 2)