2016-05-18 47 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 
};