6

我想获取一个序列或向量并创建一个无限的、循环的、惰性的版本。这是我尝试过的:

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

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

4

1 回答 1

11

您正在寻找cycle

(take 5 (cycle '(1 2 3))) ;; => (1 2 3 1 2)
于 2013-08-01T15:25:56.493 回答