Ocaml utop 不(但确实)识别 Big_int

Ocaml utop does not (but does) recognise Big_int

我有一些使用模块 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 is no longer part of the OCaml distribution. It was replaced by Zarith'。好吧,我知道,而且我仍然可以使用 Big_int.

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

utop # open Big_int;;

到达那里后,它会像 Big_int.add_big_int 一样自动完成我的 Big_int.。所以 Big_int 在某个地方并且被识别(VSCode 也自动完成它)。

有些事情我不明白。有帮助吗?

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

但是,num 已被弃用,取而代之的是 Zarith

如果出于某些迫切的需要,需要使用num,在与dune utop一起使用之前,需要在项目的沙丘文件中将其声明为依赖项。