2016-02-19 1 views
3

Я пытаюсь настроить среду Emacs OCAML следуя Real World OCAML инструкции here, но когда я начинаю utop я получаю ошибка:utop ошибка: Нет такой пакет: sexplib.syntax - требуется `core.syntax»

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

Я подозреваю, что это ошибка, вызванная недавним переходом базового набора с 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 
+0

Thnx - обновление/обновление исправлено. – BillyBadBoy

+0

У меня проблема с этой проблемой даже после обновления/обновления: 'ocamlfind list | grep sexplib' не перечисляет sexplib.syntax – Marko

+0

Я попытался установить ядро ​​113.00.00 сначала - может быть, это имеет значение? – BillyBadBoy

2

core.syntax больше не поддерживается начиная с версии 113.24.00. Я сделал небольшой выпуск ядра (113.24.02), чтобы сделать его эффективным.

Теперь вы должны использовать ppx_jane. Это эквивалент core.syntax для переписчиков ppj Jane Street. Обновлены инструкции Real World OCaml.

Вы можете использовать ppx_jane либо как обычный пакет findlib или непосредственно:

(* Regular findlib package *) 
# #require "ppx_jane";; 
(* Directly *) 
# #ppx "ppx-jane -as-ppx";; 
+0

У меня есть ppx_jane и sexplib, но sitll не смог выполнить следующую работу: type t = {foo: int; bar: float} with sexp ;; 'с ядром-0.9.1 – krokodil

1

Аспект, который не упоминалось выше, является то, что установка пакета opam sexplib не достаточно, чтобы получить findlib sexplib.syntax, даже с версией 113.00.00 или более ранней: обязательно установите пакет opam type_conv