На этом шаге мы перечислим основные операции над списками.
Приведём операции стандартного модуля Prelude для обработки списков с указанием их приоритета и ассоциативности.
Символ | Значение | Ассоциативность | Приоритет | Тип |
---|---|---|---|---|
!! | Элемент списка по индексу | Левая | 9 | [a] -> Int -> a |
: | Добавление элемента в список | Правая | 5 | a -> [a] -> [a] |
++ | Конкатенация списков | Правая | 5 | [a] -> [a] -> [a] |
> [1,2,3] !! 2 > ['a','b'] !! 2 3 Program error: Prelude.!!: index to large > [1,2,3]++[4,5] > ['a']++['b','c'] [1,2,3,4,5] "abc" > 22:[-1,3,-2] > 'z':['a','b','c'] [22,-1,3,-2] "zabc"
Явное указание типа функции в её определении при помощи символов "::" может использоваться и для наложения ограничения на тип функции, которое сужает область использования функции (иногда выполняя оптимизирующие действия).
Например, если функция должна обработать и вернуть только список "ограниченных" целых чисел, то её тип задаётся так:
f:: [Int] -> [Int]
Со следующего шага мы начнем рассматривать функции обработки списков.