Типовые подписи - хорошее место для начала:
(:) :: a -> [a] -> [a]
(++) :: [a] -> [a] -> [a]
Вы можете узнать это с помощью :type (:)
и :type (++)
в ghci.
Как видно из сигнатур типов, оба используются для создания списков.
Оператор :
используется для построения списков (и для их повторного разбора для сопоставления с образцом). Чтобы создать список [1,2,3]
, вы просто создаете его с помощью 1 : 2 : 3 : []
. Первый элемент :
- это элемент, который нужно добавить в начало списка, а второй элемент - это либо список (также созданный с помощью :
, либо пустой список, обозначенный []
).
Оператор ++
является списком списков. Он берет два списка и добавляет их вместе. [1,2,3] ++ [4,5,6]
является законным, тогда как 1 ++ [1,2,3]
не является.