(cycle coll)
Returns a lazy (infinite!) sequence of repetitions of the items in coll.
user=> (take 5 (cycle ["a" "b"]))
("a" "b" "a" "b" "a")
user=> (take 10 (cycle (range 0 3)))
(0 1 2 0 1 2 0 1 2 0)
;; Typically map works through its set of collections
;; until any one of the collections is consumed.
;; 'cycle' can be used to repeat the shorter collections
;; until the longest collection is consumed.
(mapv #(vector %2 %1) (cycle [1 2 3 4]) [:a :b :c :d :e :f :g :h :i :j :k :l])
;;=> [[:a 1] [:b 2] [:c 3] [:d 4] [:e 1] [:f 2] [:g 3] [:h 4] [:i 1] [:j 2] [:k 3] [:l 4]]