[прим. пер.: продолжение перевода.
первая часть,
вторая часть]
Связные списки
В OCaml, так же как в Perl, есть встроенная на уровне языка поддержка списков. Все элементы списка должны быть одного типа. Для определения типа используется выражение:
[1; 2; 3]
Обратите внимание: точка с запятой, а не запятая.
[]
означает пустой список.
У списка есть
голова (первый элемент) и
хвост (остальные элементы, кроме головы). Голова — элемент. Хвост — список. В вышеприведённом примере голова — целое число 1, а хвост — список
[2; 3]
.
Альтернативной формой записи является использование оператора
конструирования (cons) в форме
head :: tail
. Нижеприведённые строки полностью эквивалентны друг другу.
[1; 2; 3]
1 :: [2; 3]
1 :: 2 :: [3]
1 :: 2 :: 3 :: []
Зачем мы упомянули оператор конструирования? Он полезен когда мы начинаем сопоставление с образцом для списков, мы обсудим это чуть позже.
Тип данных для связного списка
Тип данных для связного списка целых будет
int list
; общий тип для связного списка объектов типа
foo
будет
foo list
.