将 utop 与本地 ocaml 构建一起使用?

Use utop with local ocaml build?

我编译了一个自定义版本的 ocaml 4.04.0(这是别人写的)。我可以 运行 它并使用 rlwrap 和 ledit 与其交互,但我宁愿 运行 它与 utop。 (我不需要自动完成;在 utop 中编辑命令比在 rlwrap 或 ledit 中更好。)

utop 显然默认依赖于 opam,因为它 运行 是使用 opam switch 设置的任何版本的 ocaml。但是,我很难找到任何关于 utop 和 opam 之间关系的文档,或者关于如何将 utop 转换为 运行 opam 尚未设置的 ocaml 版本的文档。 man utopopam --help,反复网络搜索,一无所获。虽然这似乎是个坏主意,但我尝试用自定义可执行文件简单地替换 .opam/4.04.0/bin 中的文件 ocaml,但是那时内置到可执行文件中的额外包不可用,所以我猜运行ning 的 utop 显然是错误的。我尝试 运行ning utop 将自定义 ocaml 文件作为参数:utop ./ocaml。根据 utop 手册页,我认为这行不通,但事实并非如此。下一步似乎是阅读utop源码,但作为ocaml的新手,我不太愿意去潜水,而且似乎没有必要。

如何 运行 使用我自己的 ocaml 可执行文件进行 utop?

Utop 不依赖于 opam:utop 直接构建在 OCaml 的编译器库之上。因此,无论如何,它都不是 运行 标准的 ocaml 顶层。如果您想将 utop 与您的自定义版本的 OCaml 一起使用,您需要使用相应的自定义编译器库构建一个 utop 版本。

最简单的方法可能是创建您自己的 opam 编译器条目,例如使用 opam-compiler-conf,然后使用 opam switch 切换到此版本的编译器。