为什么一些标准的ocaml库是opam包而有些不是?

Abd*_*lah 2 ocaml ocamlfind opam

base-unix在OCaml opam存储库中看到了这个包.它被描述为"与OCaml编译器一起分发的Unix库".与OCaml编译器一起分发的一些其他库没有自己的包.例如,没有库的base-strstr.

为什么会有这样的差异?据我所知,在使用ocamlfind或编译时,它们都需要在命令行中指定为包或库ocamlbuild.

cam*_*ter 6

具有OPAM包名称base-XXX的库是可选库:它们来自OCaml编译器本身,但它们可能安装也可能不安装,具体取决于计算机环境,操作系统的os和构建配置标志.例如,base-unix的存在意味着unix库在该环境中可用.

另一方面,str库不依赖于系统,因此可以在安装OCaml的任何地方使用.因此,OPAM不需要明确地提供其基础包来告诉库的存在.

虽然所有OCaml安装都存在str,但它的链接并不是自动的.这就是ocamlfind需要一个包的原因.

OPAM包用于通过opam命令进行安装.OCamlFind包用于链接.他们是相关但不同的.令人困惑,但这就是我们目前在OCaml生态系统中所拥有的.