Я читаю через руководство языка для OCaml и наткнулся на оператора «минусы», обозначается какOCaml против назначения
::
Однако, это не объясняется вовсе , что это есть, и то, что его обычно используется для.
Я читаю через руководство языка для OCaml и наткнулся на оператора «минусы», обозначается какOCaml против назначения
::
Однако, это не объясняется вовсе , что это есть, и то, что его обычно используется для.
Это основной оператор структурирования списков. Список [1; 2; 3]
строится с тремя приложениями оператора ::
: (. Эта операция была под названием cons с начала Лисп дней 50 лет назад)
$ ocaml
OCaml version 4.01.0
# 1 :: 2 :: 3 :: [];;
- : int list = [1; 2; 3]
Оператор ::
может также появиться в шаблонах , чтобы destructure список:
let rec length l =
match l with
| [] -> 0
| h :: t -> 1 + length t
также посмотреть на Ressource в http://ocaml.org/learn/ - в частности, в книге «Реальный мир OCaml» имеет section on lists.
На самом деле, эта рекурсивная функция, которую вы только что указали, была моим вдохновением, чтобы задать этот вопрос. Не могли бы вы уточнить, что означает «| h :: t» на второй строке? Я уже знаю, что это относится к голове и хвостам, и из моего опыта работы с Схемой это означало бы, что голова - это первый элемент, а хвосты - все остальные элементы. – user2789945
Это означает грубо: если данный список не пуст, то он должен иметь голову и хвост. Назовите головку 'h' и вызовите хвост' t'. Да, голова - это один элемент, а хвост - список элементов (остальные). –
Большое спасибо! Это спасло мне гигантскую головную боль. – user2789945