如何在clojure中创建无限重复序列?

时间:2013-08-01 15:21:27

标签: 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)))

但这似乎有点令人不满和松弛。我假设重新组织一系列序列很昂贵,但我可能错了:)

1 个答案:

答案 0 :(得分:11)

您正在寻找cycle

(take 5 (cycle '(1 2 3))) ;; => (1 2 3 1 2)