:: Ord a => [a] -> [a]

The sort function implements a stable sorting algorithm. It is a special case of sortBy, which allows the programmer to supply their own comparison function. Elements are arranged from lowest to highest, keeping duplicates in the order they appeared in the input.
```>>> sort [1,6,4,3,2,5]
[1,2,3,4,5,6]
```
The nubOrd function removes duplicate elements from a list. In particular, it keeps only the first occurrence of each element. By using a Set internally it has better asymptotics than the standard nub function.

Strictness

nubOrd is strict in the elements of the list.

Efficiency note

When applicable, it is almost always better to use nubInt or nubIntOn instead of this function, although it can be a little worse in certain pathological cases. For example, to nub a list of characters, use
```nubIntOn fromEnum xs
```
O(n log n). The nubOrd function removes duplicate elements from a list. In particular, it keeps only the first occurrence of each element. Unlike the standard nub operator, this version requires an Ord instance and consequently runs asymptotically faster.
```nubOrd "this is a test" == "this ae"
nubOrd (take 4 ("this" ++ undefined)) == "this"
\xs -> nubOrd xs == nub xs
```
O(n log n). The nubSort function sorts and removes duplicate elements from a list. In particular, it keeps only the first occurrence of each element.
```nubSort "this is a test" == " aehist"
\xs -> nubSort xs == nub (sort xs)
```
Remove duplicates but keep elements in order. O(n * log n)
Like nub, but has O(n log n) complexity instead of O(n^2). Code for ordNub and listUnion taken from Niklas Hambüchen's ordnub package.
A right-biased version of ordNub. Example:
```>>> ordNub [1,2,1] :: [Int]
[1,2]
```
```>>> ordNubRight [1,2,1] :: [Int]
[2,1]
```
Extract the elements after the head of a list, which must be non-empty.
Return all the elements of a list except the last one. The list must be non-empty.
reverse xs returns the elements of xs in reverse order. xs must be finite.
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.
```tailSafe [] = []
tailSafe [1,3,4] = [3,4]
```
Equivalent to drop 1, but likely to be faster and a single lexeme.
```drop1 ""         == ""
drop1 "test"     == "est"
\xs -> drop 1 xs == drop1 xs
```
Equivalent to dropEnd 1, but likely to be faster and a single lexeme.
```dropEnd1 ""         == ""
dropEnd1 "test"     == "tes"
\xs -> dropEnd 1 xs == dropEnd1 xs
```
A total variant of tail.
A total variant of init.