Consider concatMap Use dropWhile to drop based on a specific condition takeWhile returns the longers possible prefix that satisfies a condition span does the same, but also returns the rest of the list (2 element tuple) Cycle repeats a given sequence infinitely: cycle [1,2,3] = [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]... Repeat is like cycling a single element