На этом шаге мы перечислим эти функции.
Перечислим несколько таких функций.
1. Функция, возвращающая первый элемент непустого (!) списка:
head:: [a] -> a head lst
> head ['a'] > head [1,2,3,4] > head [[1,-1],[2],[3,4,5]] 'a' 1 [1,-1]
2. Функция, возвращающая хвост непустого (!) списка, т.е. список без его первого элемента:
tail:: [a] -> [a] tail lst
> tail ['a'] > tail [1,2,3,4] > tail [[1,-1],[2],[3,4,5]] [] [2,3,4] [[2],[3,4,5]]
last:: [a] -> a last lst
> last ['a'] > last [1,2,3,4] > last [[1,-1],[2],[3,4,5]] 'a' 4 [3,4,5]
4. Функция, возвращающая исходный непустой (!) список без последнего элемента:
init:: [a] -> [a] init lst
> init ['a'] > init [1,2,3,4] > init [[1,-1],[2],[3,4,5]] [] [1,2,3] [[1,-1],[2]]
5. Функция, возвращающая список из первых n элементов исходного списка:
take:: Int -> [a] -> [a] take n lst
> take 1 [] > take 2 [1,2,3] > take 3 [[1,-1],[2],[3,4,5]] [] [1,2] [[1,-1],[2],[3,4,5]]
6. Функция, возвращающая список элементов исходного списка, начиная с n-ого элемента (нумерация элементов списка начинается с нуля):
drop:: Int -> [a] -> [a] drop n lst
> drop 1 [] > drop 2 [1,2,3] > drop 3 [[1,-1],[2],[3,4,5]] [] [3] []
На следующем шаге мы рассмотрим элементарные преобразователи.