Repeats another iterator indefinitely.
Returns an iterator which produces, and caches, each item from the original iterator. After the original iterator is finished, it repeatedly yields all of the cached items.
Infinite iterators can be converted to finite iterators using
(prn ..(take 5 (cycle '(0 1 2))) ; prints 0 1 2 0 1