我正在尝试按照此处的现实世界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