首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么camlp4o不能解析(或)为二进制函数?

为什么camlp4o不能解析(或)为二进制函数?
EN

Stack Overflow用户
提问于 2012-06-22 02:05:15
回答 2查看 112关注 0票数 1

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

代码语言:javascript
复制
let any (truths:bool list) = List.fold_left (or) false truths

但在任何加载了camlp4o的环境中,都无法使用以下命令进行解析:

代码语言:javascript
复制
Error: Parse error: ")" or "module" or [expr] expected after "(" (in [expr])

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

代码语言:javascript
复制
let sum (nums:int list) = List.fold_left (+) 0 nums

为什么会这样呢?这是camlp4o的一个限制,还是一个bug?这发生在OCaml 3.12.1 ( OS X 10.7.4上,通过GODI bootstrap新安装)上。

EN

回答 2

Stack Overflow用户

发布于 2012-06-22 06:32:02

这是已修复的a known bug。即将发布的4.00版本将不会有这个问题。

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

票数 4
EN

Stack Overflow用户

发布于 2012-06-22 02:52:18

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

无论如何,一些快速测试表明(||)可以与camlp4o一起工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11144107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档