我正在尝试按照 Real World Ocaml 说明here设置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不存在。
有谁知道如何解决这个问题?
答案 0 :(得分:4)
我怀疑这是一个错误,是由最近的核心套件从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
答案 1 :(得分:2)
core.syntax
。我做了一个小的核心版本(113.24.02),以使其有效。
您现在应该使用ppx_jane
。对于Jane Street ppx重写器,它相当于core.syntax
。 Real World OCaml 说明已更新。
您可以将ppx_jane
用作常规findlib包或直接使用:
(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;
答案 2 :(得分:1)
上面未提及的一个方面是,安装opam软件包sexplib
不足以获取findlib sexplib.syntax
,即使版本为113.00.00或更早版本:请务必同时安装opam包type_conv