首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OCaml '_a在程序中是不允许的?

OCaml '_a在程序中是不允许的?
EN

Stack Overflow用户
提问于 2014-01-27 18:59:00
回答 2查看 239关注 0票数 1

我正在Ubuntu12.04上使用OCaml,我试图使用make函数编译它,但它不太管用。

当前正在尝试编译程序EVA2H1,但它返回

代码语言:javascript
复制
ocamlc -w A -g -c error.mli
File "error.mli", line 54, characters 3-6:
Error: The type variable name '_a is now allowed in programs
make: *** [error.cmi] Error 2"

我在谷歌上搜索了“_a在程序中是不允许的”,并在这里看到错误,所以我输入了

代码语言:javascript
复制
# let f = List.sort compare;;
val f : '_a list -> '_a list = <fun>
# f [2;1;3];;
- : int list = [1; 2; 3]
# f;;
- : int list -> int list = <fun>

但它仍然没有解决问题,有人能帮忙吗?

我正在使用这个站点的代码http://www.lsv.ens-cachan.fr/Software/evatrans2/,我用EVAtrans库下载了EVA2H1。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-27 19:10:54

事实上,以'_开头的类型变量在OCaml程序中是不允许的。编译器/解释器使用它们来指示单形但尚未指定的类型变量。为了使其明确无误,在编写代码时禁止使用它们。

如果您正在使用的源代码中实际上包含这样的类型变量,那么它很可能是为OCaml的早期版本编写的。

您在网络上看到的示例显示了编译器/解释器的输出,而不是用户编写的代码。这就是为什么它有'_a list在里面。

票数 3
EN

Stack Overflow用户

发布于 2014-01-28 10:21:52

我修复了导致库无法在2003年后版本的OCaml下编译的几个黑客。请参阅更新的tarball 这里

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

https://stackoverflow.com/questions/21389315

复制
相关文章

相似问题

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