2016-05-18 7 views
5

Оператор cons (::) является фундаментальной частью 1) записи функций рекурсивного списка в OCaml и аналогичных языках и 2) сопоставления шаблонов в списках. Однако, я ничего не могу найти в документации разума в отношении недостатков, и в REPL, это выдает ошибку:Где находится Cons Cons (: :)?

Reason # let myList = [2, 3, 4]; 
let myList : list int = [2, 3, 4] 
Reason # 1 :: myList; 
Error: Syntax error 

Есть ли замена для оператора минусов?

+0

Что такое причина? Я не слышал об этом и ничего не нашел в Google. –

+0

http://facebook.github.io/reason/ – jayelm

+0

TIL. Благодаря! Мне бы хотелось увидеть тег wiki о языке. –

ответ

9

Ах, это псевдонимами как оператор "неизменяемый список дописывания" в Ризона list of primitives:

OCaml:

1 :: 2 :: myList 
1 :: 2 :: [3, 4, 5] 

Причина:

[1, 2, ...myList] 
[1, 2, ...[3, 4, 5]] 

Как ни странно, по крайней мере, в текущей версии (0.0.6) вы можете использовать оба синтаксиса при сопоставлении с образцом:

let head = fun lst => switch lst { 
    | [] => failwith "Empty list" 
    | [hd, ...tl] => hd 
}; 

let head = fun lst => switch lst { 
    | [] => failwith "Empty list" 
    | hd::tl => hd 
}; 
Смежные вопросы