我正在Ubuntu12.04上使用OCaml,我试图使用make函数编译它,但它不太管用。
当前正在尝试编译程序EVA2H1,但它返回
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在程序中是不允许的”,并在这里看到错误,所以我输入了
# 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。
发布于 2014-01-27 19:10:54
事实上,以'_开头的类型变量在OCaml程序中是不允许的。编译器/解释器使用它们来指示单形但尚未指定的类型变量。为了使其明确无误,在编写代码时禁止使用它们。
如果您正在使用的源代码中实际上包含这样的类型变量,那么它很可能是为OCaml的早期版本编写的。
您在网络上看到的示例显示了编译器/解释器的输出,而不是用户编写的代码。这就是为什么它有'_a list在里面。
发布于 2014-01-28 10:21:52
我修复了导致库无法在2003年后版本的OCaml下编译的几个黑客。请参阅更新的tarball 这里。
https://stackoverflow.com/questions/21389315
复制相似问题