无法让 utop 和 merlin 与 Core 和 Base 一起使用

问题描述

软件包安装正确。

opam install core                                    
[NOTE] Package core is already installed (current version is v0.14.1)

opam install base
[NOTE] Package base is already installed (current version is v0.14.1).

我的 .ocamlinit 文件

(* ## added by OPAM user-setup for ocamltop / base ## 3ec62baf6f9c219ae06d9814069da862 ## you can edit,but keep this line *)
(* ## end of OPAM user-setup addition for ocamltop / base ## keep this line *)

#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.Syntax";;

真正奇怪的是 - 当我使用 ocaml 命令启动 ocaml 的顶级 它正确加载了所有内容,并且 open Core;; open Base;; 之类的命令可以正常工作。但它们不适用于 utop。我得到 Error: Unbound module Core。同样,如果我写 merlin,VS 代码中的 open Core 会给我红色波浪线。

有人能帮我理解发生了什么吗?如果它们有帮助,我可以为您提供更多详细信息。我已经查看了所有被问到的类似问题,但没有一个能帮助我解决这个问题。

编辑:如果有帮助,这是opam switch

的结果
❯ opam switch

#   switch   compiler                    description
->  4.12.0   ocaml-base-compiler.4.12.0  4.12.0
    default  ocaml-base-compiler.4.12.0  default

解决方法

utop 不是随 opam 一起安装的,而是随 brew 一起安装的,因此它找不到库。

请记住在使用 opam 安装所有内容之前始终清理所有 OCaml 相关内容,否则可能会破坏内容。