1

我有一些使用模块的代码Big_int,例如:

open Big_int;;
Big_int.gcd_big_int 5 6;;

但是,当我用 utop 编译它时dune utop --release(我用它release来避免一些警告),然后我得到这个错误:

Error: Required module `Big_int' is unavailable

我已经阅读了它并且我已经阅读(https://groups.google.com/g/felix-language/c/1CfHgpe9zps?pli=1)'Big_int不再是 OCaml 发行版的一部分。它被 Zarith 取代。好吧,我知道,而且我仍然可以使用Big_int.

我怎么知道?关键是,如果我从utop没有错误的任何其他文件开始,并且一旦进入我 open Big_int,那么它不会后悔:

utop # open Big_int;;

在那里,它会自动完成 my Big_int.,就像在Big_int.add_big_int. 所以在Big_int某个地方并且它被识别(VSCode 也自动完成它)。

有一点我不明白。有什么帮助吗?

4

1 回答 1

2

出于兼容性原因,该num库的二进制文件仍安装在编译器目录中(2021 年)。这就是你在 utop 中看到的。

但是,num不赞成使用Zarith.

如果出于某些苛刻的需求,您需要使用num,则需要在项目的沙丘文件中将其声明为依赖项,然后再与dune utop.

于 2021-05-11T12:26:47.093 回答