utop 错误:没有这样的包:sexplib.syntax - "core.syntax"需要



我正在尝试按照此处的现实世界Ocaml说明设置emacs ocaml环境,但是当我启动utop时,我收到错误:

No such package: sexplib.syntax - required by `core.syntax'

如果我运行:ocamlfind list | grep sexp从命令行得到:

ppx_sexp_conv       (version: 113.24.00)
ppx_sexp_conv.expander (version: 113.24.00)
ppx_sexp_conv.expander.for_ppx_deriving (version: n/a)
ppx_sexp_message    (version: 113.24.00)
ppx_sexp_value      (version: 113.24.00)
sexplib             (version: 113.24.00)
sexplib.num         (version: 113.24.00)
sexplib.unix        (version: 113.24.00)

在我的新手眼中,这表明 sexplib.syntax 不存在。

有谁知道如何解决这个问题?

我怀疑这是一个错误,是由核心套件最近从camlp4到ppx的过渡引起的。它应该在 113.24.01 中修复,因此请确保您有

 opam update
 opam upgrade

,然后安装最新版本:

 opam install core.113.24.01

如果这没有帮助,那么另一种选择是在过渡之前回退到旧版本,例如

 opam install core.113.00.00

为了防止库自动升级,您可以将其固定:

 opam pin add core 113.00.00

113.24.00 版本开始不再支持core.syntax。我做了一个核心(113.24.02)的次要版本来使其有效。

您现在应该使用 ppx_jane .这相当于简街 ppx 重写器的core.syntax真实世界的 OCaml 说明已更新。

您可以将ppx_jane用作常规的findlib包,也可以直接使用:

(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;
上面

没有提到的一个方面是,即使使用版本113.00.00或更早版本,安装opam软件包sexplib也不足以获得findlib sexplib.syntax: 请务必同时安装 opam 包type_conv

最新更新