3

我正在尝试按照此处的Real World 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 不存在。

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

4

3 回答 3

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
于 2016-02-19T14:20:00.323 回答
2

core.syntax从 113.24.00 版本开始不再支持。我做了一个小版本的核心 (113.24.02) 以使其生效。

您现在应该使用ppx_jane. 它相当于core.syntaxJane Street ppx 重写器。Real World OCaml指令已更新。

您可以将ppx_jane其用作常规 findlib 包或直接使用:

(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;
于 2016-02-29T17:41:15.093 回答
1

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

于 2016-12-08T13:18:44.177 回答