FUS RO DAH <| sep |> Are you talking about a list generated by the function cycle , like cycle 1 , 2 , 3 ? If so , you don ' t start or stop it explicitly . If you try to read values from the front of the list , it starts and if you stop after reading however many values you want , it stops . So , for example take 50 cycle 1 , 2 , 3 will take the first 50 values from the cycling list , and that ' s the only kind of starting and stopping that ' s possible . If you ' re thinking you ' d like to take a few values from a cycling list , do something with them , and then come back again to read some more values later where you left off , then you can use functions like splitAt to split the cycling list into two parts , just like any other list main do let cycle 1 cycle 1 , 2 , 3 , 4 let usenow , saveforlater splitAt 5 cycle 1 putStrLn $ I am totally using some values show usenow let usemore , savemoreforlater splitAt 5 saveforlater putStrLn $ See , I can get some more show usemore