Reason的缺点(::)运营商在哪里?

时间:2016-05-18 21:58:07

标签: pattern-matching ocaml cons reason

cons(::)运算符是1)在OCaml和类似语言中编写递归列表函数,以及2)列表上的模式匹配的基本部分。但是,我在Reason的有关cons的文档中找不到任何内容,而在REPL中,这会引发错误:

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

是否有替代cons运营商?

1 个答案:

答案 0 :(得分:12)

啊,它在Reason 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
};