>>> cycle [] *** Exception: Prelude.cycle: empty list
>>> take 10 (cycle [42]) [42,42,42,42,42,42,42,42,42,42]
>>> take 10 (cycle [2, 5, 7]) [2,5,7,2,5,7,2,5,7,2]
>>> take 1 (cycle (42 : undefined)) [42]
cycle (1 :| [2,3]) = 1 :| [2,3,1,2,3,...]
>>> cycle [] *** Exception: Prelude.cycle: empty list >>> cycle [42] [42,42,42,42,42,42,42,42,42,42... >>> cycle [2, 5, 7] [2,5,7,2,5,7,2,5,7,2,5,7...
>>> cycle [] *** Exception: Prelude.cycle: empty list >>> take 10 (cycle [42]) [42,42,42,42,42,42,42,42,42,42] >>> take 10 (cycle [2, 5, 7]) [2,5,7,2,5,7,2,5,7,2] >>> take 1 (cycle (42 : undefined)) [42]
>>> cycle [] [] >>> take 10 $ cycle [1,2,3] [1,2,3,1,2,3,1,2,3,1]
cycle = forever
>>> rest <- S.print $ S.splitAt 3 $ S.cycle (yield True >> yield False) True False True >>> S.print $ S.take 3 rest False True False
>>> cycle [] *** Exception: Prelude.cycle: empty list >>> take 20 $ cycle [42] [42,42,42,42,42,42,42,42,42,42... >>> take 20 $ cycle [2, 5, 7] [2,5,7,2,5,7,2,5,7,2,5,7...
>>> Q.putStrLn $ Q.take 7 $ Q.cycle "y\n" y y y y
cycle [1,2,3] = Cons 1 (Cons 2 (Cons 3 (Cons 1 (Cons 2 ...