2015-01-26 4 views
1

Я читаю через руководство языка для OCaml и наткнулся на оператора «минусы», обозначается какOCaml против назначения

:: 

Однако, это не объясняется вовсе , что это есть, и то, что его обычно используется для.

ответ

3

Это основной оператор структурирования списков. Список [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 
+0

На самом деле, эта рекурсивная функция, которую вы только что указали, была моим вдохновением, чтобы задать этот вопрос. Не могли бы вы уточнить, что означает «| h :: t» на второй строке? Я уже знаю, что это относится к голове и хвостам, и из моего опыта работы с Схемой это означало бы, что голова - это первый элемент, а хвосты - все остальные элементы. – user2789945

+1

Это означает грубо: если данный список не пуст, то он должен иметь голову и хвост. Назовите головку 'h' и вызовите хвост' t'. Да, голова - это один элемент, а хвост - список элементов (остальные). –

+0

Большое спасибо! Это спасло мне гигантскую головную боль. – user2789945

 Смежные вопросы

  • Нет связанных вопросов^_^