在 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的限制还是错误?这发生在 OCaml 3.12.1 上(在 OS X 10.7.4 上,通过 GODI 引导程序全新安装)。