Emacs utop错误:没有这样的包:sexplib.syntax-由'core.syntax';
我正试图按照真实世界的ocaml指令设置emacs ocaml环境,但当我启动utop时,出现了错误:Emacs utop错误:没有这样的包:sexplib.syntax-由'core.syntax';,emacs,ocaml,opam,utop,Emacs,Ocaml,Opam,Utop,我正试图按照真实世界的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_
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并不存在
有人知道如何解决这个问题吗?我怀疑这是一个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
core.syntax
从113.24.00版开始不再受支持。我对core做了一个小版本(113.24.02)以使其有效
您现在应该使用ppx\u jane
。它相当于Jane Street ppx重写器的core.syntax
。真实世界的OCaml指令已经更新
您可以将ppx_jane
作为常规findlib包使用,也可以直接使用:
(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;
上面没有提到的一个方面是,安装opam包
sexplib
不足以获得findlibsexplib.syntax
,即使是113.00.00版或更早版本:请确保也安装opam软件包type_conv即使在更新/升级之后,我仍然存在此问题:ocamlfind list | grep sexpliblib
未列出sexplib。syntaxI首先尝试安装core 113.00.00-可能这与此相关?您最终获得的core版本是什么?您是否锁定了它?我锁定了它,但后来移除了该锁定(opam pin移除core),然后执行并更新/升级。@BillyBadBoy:我尝试先安装core.113.00.00,然后更新/升级。这使得我没有核心来满足未满足的依赖关系core->variantslib<109.16.00
。我最终切换回了以前的状态。我已经安装了ppx_jane和Sexpliblib,但是sitll无法使用sexp;type t={foo:int;bar:float}执行以下操作:代码>具有核心-0.9.1