[прим. пер.: продолжение перевода. первая часть, вторая часть]
В OCaml, так же как в Perl, есть встроенная на уровне языка поддержка списков. Все элементы списка должны быть одного типа. Для определения типа используется выражение:
Обратите внимание: точка с запятой, а не запятая.
У списка есть голова (первый элемент) и хвост (остальные элементы, кроме головы). Голова — элемент. Хвост — список. В вышеприведённом примере голова — целое число 1, а хвост — список
Альтернативной формой записи является использование оператора конструирования (cons) в форме
Зачем мы упомянули оператор конструирования? Он полезен когда мы начинаем сопоставление с образцом для списков, мы обсудим это чуть позже.
Тип данных для связного списка целых будет
Связные списки
В 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
.