我想要一个序列或向量,并创建一个无限的,循环的,懒惰的版本。这就是我试过的:
(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)))
但这似乎有点令人不满和松弛。我假设重新组织一系列序列很昂贵,但我可能错了:)
答案 0 :(得分:11)
您正在寻找cycle
:
(take 5 (cycle '(1 2 3))) ;; => (1 2 3 1 2)