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

时间:2016-02-19 13:05:13

标签: emacs ocaml opam utop

我正在尝试按照 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不存在。

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

3 个答案:

答案 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)

从113.24.00版本开始,不再支持

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