2013-08-01 4 views
4

Я хочу взять последовательность или вектор и создать бесконечную, цикличную, ленивую версию. Это то, что я пробовал:Как сделать бесконечную повторяющуюся последовательность в clojure?

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

, но это кажется бит неудовлетворительный и дряблый. Я предполагаю, что реструктуризация последовательность последовательностей является дорогостоящим, но я вполне может быть неправильно :)

ответ

9

Вы ищете cycle:

(take 5 (cycle '(1 2 3))) ;; => (1 2 3 1 2) 
Смежные вопросы