# Module DA.List.Total¶

## Functions¶

: [a] -> Optional a

Return the first element of a list. Return None if list is empty.

tail

: [a] -> Optional [a]

Return all but the first element of a list. Return None if list is empty.

last

: [a] -> Optional a

Extract the last element of a list. Returns None if list is empty.

init

: [a] -> Optional [a]

Return all the elements of a list except the last one. Returns None if list is empty.

(!!)

: [a] -> Int -> Optional a

Return the nth element of a list. Return None if index is out of bounds.

foldl1

: (a -> a -> a) -> [a] -> Optional a

Fold left starting with the head of the list. For example, foldl1 f [a,b,c] = f (f a b) c. Return None if list is empty.

foldr1

: (a -> a -> a) -> [a] -> Optional a

Fold right starting with the last element of the list. For example, foldr1 f [a,b,c] = f a (f b c)

foldBalanced1

: (a -> a -> a) -> [a] -> Optional a

Fold a non-empty list in a balanced way. Balanced means that each element has approximately the same depth in the operator tree. Approximately the same depth means that the difference between maximum and minimum depth is at most 1. The accumulation operation must be associative and commutative in order to get the same result as foldl1 or foldr1.

Return None if list is empty.

minimumBy

: (a -> a -> Ordering) -> [a] -> Optional a

Return the least element of a list according to the given comparison function. Return None if list is empty.

maximumBy

: (a -> a -> Ordering) -> [a] -> Optional a

Return the greatest element of a list according to the given comparison function. Return None if list is empty.

minimumOn

: Ord k => (a -> k) -> [a] -> Optional a

Return the least element of a list when comparing by a key function. For example minimumOn (\(x,y) -> x + y) [(1,2), (2,0)] == Some (2,0). Return None if list is empty.

maximumOn

: Ord k => (a -> k) -> [a] -> Optional a

Return the greatest element of a list when comparing by a key function. For example maximumOn (\(x,y) -> x + y) [(1,2), (2,0)] == Some (1,2). Return None if list is empty.