我看过一些源代码
let rec parse_document = parser
| [< len = parse_int32; st; >] ->
parse_list [] (ES.take_int32 len st)
| [< >] -> malformed "parse_document"
我能知道里面[< >]
是什么吗?关于这种迹象,谷歌太难了。
答案 0 :(得分:7)
这是Stream数据类型的语法糖。它的操作在书this chapter的Developping Applications with OCaml中有详细描述。
语法糖不是内置于编译器中,需要由Camlp4预处理器进行预处理。为此,您必须将-pp camlp4o
添加到编译命令行。
答案 1 :(得分:2)
这是一个流。它主要用于创建解析器。但是已经从OCaml中删除了流,现在作为camlp4扩展提供。
答案 2 :(得分:2)
它是Stream parsing syntax extension的一部分,它意味着空流。
答案 3 :(得分:1)
这是streams的字面语法。流就像一个列表,除了一次只有一个元素可用,并通过读取它删除第一个元素。
它似乎主要用于解析器代码。解析器 - 在您的示例中使用parser
关键字声明 - 是可以“消耗”流的元素的函数。