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

时间:2017-04-25 15:38:30

标签: ocaml opam utop

我已经编译了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,但是可执行文件中内置的额外软件包不可用,所以我的猜测utop的运行情况显然是错误的。我尝试使用自定义ocaml文件作为参数运行utop:utop ./ocaml。基于utop手册页,我并不认为这会起作用,但事实并非如此。下一步似乎是阅读utop来源,但作为ocaml的新手,我不愿意接受这次潜水,而且似乎没有必要。

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

1 个答案:

答案 0 :(得分:3)

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

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