代码之家  ›  专栏  ›  技术社区  ›  BillyBadBoy

utop错误:没有这样的包:sexplib。语法-“core.syntax”所需

  •  3
  • BillyBadBoy  · 技术社区  · 9 年前

    我正在尝试按照 真实世界Ocaml 说明书 here ,但当我启动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。语法不存在。

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

    3 回复  |  直到 9 年前
        1
  •  4
  •   ivg    9 年前

    我怀疑这是一个bug,是由最近核心套件从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
    
        2
  •  2
  •   dim    8 年前

    core.syntax 从113.24.00版本开始不再支持。我对核心(113.24.02)进行了一次小的发布,以使其有效。

    您现在应该使用 ppx_jane 。相当于 核心语法 Jane Street ppx重写器。这个 真实世界OCaml 说明已更新。

    您可以使用 ppx简 作为常规findlib包或直接:

    (* Regular findlib package *)
    # #require "ppx_jane";;
    (* Directly *)
    # #ppx "ppx-jane -as-ppx";;
    
        3
  •  1
  •   AltGr    8 年前

    上面没有提到的一个方面是安装opam包 sexplib 不足以获取findlib sexplib.syntax ,即使版本为113.00.00或更早版本:请确保也安装opam软件包 type_conv