2016-05-18 48 views
5

cons(::)运算符是1)用OCaml和类似语言编写递归列表函数和2)列表中的模式匹配的基本部分。但是,我找不到原因的有关利弊文档中任何事情,而在REPL,这将引发一个错误:Reason的缺点(:)运算符在哪里?

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。谢谢!我很想看到关于该语言的标签维基。 –

回答

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 
};