1

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

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

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

4

1 回答 1

3

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

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

于 2017-04-25T16:12:02.913 回答