Remove duplicates but keep elements in order. O(n * log n)

Extract the elements after the head of a list, which
must be non-empty.

>>> tail [1, 2, 3] [2,3] >>> tail [1] [] >>> tail [] *** Exception: Prelude.tail: empty list

reverse `xs` returns the elements of `xs` in
reverse order. `xs` must be finite.

>>> reverse [] [] >>> reverse [42] [42] >>> reverse [2,5,7] [7,5,2] >>> reverse [1..] * Hangs forever *

Return all the elements of a list except the last one.
The list must be non-empty.

>>> init [1, 2, 3] [1,2] >>> init [1] [] >>> init [] *** Exception: Prelude.init: empty list

cycle ties a finite list into a circular one, or equivalently,
the infinite repetition of the original list. It is the identity on
infinite lists.

>>> 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...

**Packages**- is:exact