Введение в OCaml: Типы данных и сопоставление [3]
8 мин
Перевод
[прим. пер.: продолжение перевода. первая часть, вторая часть]
В 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. 



Я не люблю nano и предпочитаю vim. Однако, в отсутствии vim, выбирая между vi и nano, я всё-таки предпочту nano, ибо как говорится в старой поговорке, «у vi есть два режима: бибикать и всё портить».