问题描述
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
,并且一旦进入我打开 Big_int
,那么它不会后悔:
utop # open Big_int;;
到达那里后,它会自动完成我的 Big_int.
,就像在 Big_int.add_big_int
中一样。所以有 Big_int
就在某处并且它被识别(VSCode 也会自动完成它)。
有些事情我不明白。有什么帮助吗?
解决方法
出于兼容性原因,num
库的二进制文件仍安装在编译器目录中(2021 年)。这就是你在 utop 中看到的。
但是,num
已被弃用,而支持 Zarith
。
如果出于某些特殊需要,您需要使用 num
,则需要在将其与 dune utop
一起使用之前将其声明为项目沙丘文件中的依赖项。