ошибка utop: нет такого пакета: sexplib.syntax - требуется для `core.syntax'

Я пытаюсь настроить среду emacs ocaml, следуя инструкциям Real World 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 не существует.

Кто-нибудь знает, как это исправить ?


person BillyBadBoy    schedule 19.02.2016    source источник


Ответы (3)


Я подозреваю, что это ошибка, вызванная недавним переходом основного пакета с 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
person ivg    schedule 19.02.2016
comment
У меня продолжает возникать эта проблема даже после обновления/обновления: ocamlfind list | grep sexplib не перечисляет sexplib.syntax - person Marko; 19.02.2016
comment
Пробовал сначала установить ядро ​​113.00.00 - может это актуально? - person BillyBadBoy; 19.02.2016
comment
какую версию ядра вы в итоге получили? Вы его закрепили? - person ivg; 19.02.2016
comment
Я закрепил его, но позже удалил булавку (вывод opam удалить ядро), затем сделал и обновил/обновил. - person BillyBadBoy; 19.02.2016
comment
@BillyBadBoy: сначала я попытался установить core.113.00.00, а затем обновить/обновить. Это оставило меня без ядра для неудовлетворенной зависимости core -> variantslib < 109.16.00. В итоге я вернулся в предыдущее состояние. - person Marko; 19.02.2016
comment
Итак, наконец, у вас получилось? И если нет, то пробовали ли вы установить последнюю версию core.113.24.01? - person ivg; 19.02.2016
comment
@ivg: пока безуспешно, но ядро ​​​​113.24.01 установлено и сообщается ocamlfind list | grep core - person Marko; 20.02.2016

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

Теперь вы должны использовать ppx_jane. Это эквивалент core.syntax для переписчиков ppx на Джейн Стрит. Инструкции Real World OCaml были обновлены.

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

(* Regular findlib package *)
# #require "ppx_jane";;
(* Directly *)
# #ppx "ppx-jane -as-ppx";;
person dim    schedule 29.02.2016
comment
У меня установлены ppx_jane и sexplib, но sitll не смог выполнить следующую работу type t = { foo: int; bar: float } with sexp ;; с ядром-0.9.1 - person krokodil; 09.06.2017

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

person AltGr    schedule 08.12.2016