**Packages**- base
- containers
- cgi
- bytestring

The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order.

delete x removes the first occurrence of x from its list argument. For example,
> delete 'a' "banana" == "bnana"
It is a special case of deleteBy, which allows the programmer to supply their own equality test.

The intersperse function takes an element and a list and `intersperses' that element between the elements of the list. For example,
> intersperse ',' "abcde" == "a,b,c,d,e"

elemIndicesL finds the indices of the specified element, from left to right (i.e. in ascending order).

elemIndicesR finds the indices of the specified element, from right to left (i.e. in descending order).

The non-overloaded version of insert.

Replaces all instances of a value in a list by another value.

The \\ function is list difference ((non-associative). In the result of xs \\ ys, the first occurrence of each element of ys in turn (if any) has been removed from xs. Thus
> (xs ++ ys) \\ xs == ys.
It is a special case of deleteFirstsBy, which allows the programmer to supply their own equality test.

The intersect function takes the list intersection of two lists. For example,
> [1,2,3,4] `intersect` [2,4,6,8] == [2,4]
If the first list contains duplicates, so will the result.
> [1,2,2,3,4] `intersect` [6,4,4,2] == [2,2,4]
It is a special case of intersectBy, which allows the programmer to supply their own equality test.

The union function returns the list union of the two lists. For example,
> "dog" `union` "cow" == "dogcw"
Duplicates, and elements of the first list, are removed from the the second list, but if the first list contains duplicates, so will the result. It is a special case of unionBy, which allows the programmer to supply their own equality test.

Append two lists, i.e.,
> [x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
> [x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
If the first list is not finite, the result is the first list.

drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs:
> drop 6 "Hello World!" == "World!"
> drop 3 [1,2,3,4,5] == [4,5]
> drop 3 [1,2] == []
> drop 3 [] == []
> drop (-1) [1,2] == [1,2]
> drop 0 [1,2] == [1,2]
It is an instance of the more general Data.List.genericDrop, in which n may be of any integral type.

take n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n > length xs:
> take 5 "Hello World!" == "Hello"
> take 3 [1,2,3,4,5] == [1,2,3]
> take 3 [1,2] == [1,2]
> take 3 [] == []
> take (-1) [1,2] == []
> take 0 [1,2] == []
It is an instance of the more general Data.List.genericTake, in which n may be of any integral type.

Find the indexes of all (possibly overlapping) occurances of a substring in a string.

The deleteFirstsBy function takes a predicate and two lists and returns the first list with the first occurrence of each element of the second list removed.

The intersectBy function is the non-overloaded version of intersect.