什么`[< >]`在OCaml中意味着什么?

时间:2013-04-22 14:54:06

标签: functional-programming ocaml camlp4

我看过一些源代码

let rec parse_document = parser
    | [< len = parse_int32; st; >] ->
      parse_list [] (ES.take_int32 len st)
    | [< >] -> malformed "parse_document"

我能知道里面[< >]是什么吗?关于这种迹象,谷歌太难了。

4 个答案:

答案 0 :(得分:7)

这是Stream数据类型的语法糖。它的操作在书this chapterDevelopping Applications with OCaml中有详细描述。

语法糖不是内置于编译器中,需要由Camlp4预处理器进行预处理。为此,您必须将-pp camlp4o添加到编译命令行。

答案 1 :(得分:2)

这是一个流。它主要用于创建解析器。但是已经从OCaml中删除了流,现在作为camlp4扩展提供。

答案 2 :(得分:2)

它是Stream parsing syntax extension的一部分,它意味着空流。

答案 3 :(得分:1)

这是streams的字面语法。流就像一个列表,除了一次只有一个元素可用,并通过读取它删除第一个元素。

它似乎主要用于解析器代码。解析器 - 在您的示例中使用parser关键字声明 - 是可以“消耗”流的元素的函数。