为什么camlp4o无法解析(或)二进制函数?

时间:2012-06-21 18:05:15

标签: ocaml camlp4

在vanilla OCaml中,(or)是一个二进制函数,就像(+)和其他所有函数一样,所以这样的代码工作正常:

let any (truths:bool list) = List.fold_left (or) false truths

但是在加载camlp4o的任何环境中,都无法解析:

Error: Parse error: ")" or "module" or [expr] expected after "(" (in [expr])

同时,(+)和其他整数算术运算符在任一环境中继续按预期工作:

let sum (nums:int list) = List.fold_left (+) 0 nums

这是为什么?这是camlp4o或bug的限制吗?这发生在OCaml 3.12.1上(在OS X 10.7.4上,通过GODI bootstrap新安装)。

2 个答案:

答案 0 :(得分:4)

此后a known bug已修复。即将发布的4.00版本将不会出现这个问题。

PS:当我发现有关OCaml的可疑事件时,我强烈怀疑这是一个错误,我的技术是使用site:caml.inria.fr/mantis修饰符进行谷歌搜索,以搜索OCaml错误跟踪器中的类似内容。

答案 1 :(得分:1)

在“普通”OCaml中,您可以(or)(||)互换使用。如果您查看revised syntax的定义,则不支持使用(or)。您始终需要使用(||)。也许这是这种变化的副作用?

无论如何,一些快速测试表明(||)适用于camlp4o。