Не удается загрузить батареи с помощью FindLib в Ocaml TopLevel

Я успешно установил ocaml-batteries-included а также findlib,

Я могу сделать 'ocamlfind ocamlc -package battery -c mycode.ml` без проблем.

Кроме того, если я делаю ocamlfind list, Я получил

$ ocamlfind list
batteries           (version: 2.0)
batteries.pa_comprehension (version: 2.0)
batteries.pa_comprehension.syntax (version: 2.0)
batteries.pa_llist  (version: 2.0)
batteries.pa_llist.syntax (version: 2.0)
batteries.pa_string (version: 2.0)
batteries.pa_string.syntax (version: 2.0)
batteries.syntax    (version: 2.0)
bigarray            (version: [distributed with Ocaml])
camlp4              (version: [distributed with Ocaml])
...

Проблема в using batteries в ocaml (toplevel),

Я настроил .ocamlinit как сказано:

#use "topfind";;

Toploop.use_silently
             Format.err_formatter (Filename.concat (Findlib.package_directory
             "batteries") "battop.ml");;

но когда я запускаю ocaml Я получаю это:

$ ocaml
        OCaml version 4.00.1

Findlib has been successfully loaded. Additional directives:
  #require "package";;      to load a package
  #list;;                   to list the available packages
  #camlp4o;;                to load camlp4 (standard syntax)
  #camlp4r;;                to load camlp4 (revised syntax)
  #predicates "p,q,...";;   to set these predicates
  Topfind.reset();;         to force that packages will be reloaded
  #thread;;                 to enable threads

Exception: Fl_package_base.No_such_package ("batteries", "").

Далее, если я сделаю #list в ocaml toplevel, Я получил

# #list;;
bigarray            (version: [distributed with Ocaml])
camlp4              (version: [distributed with Ocaml])
camlp4.exceptiontracer (version: [distributed with Ocaml])
camlp4.extend       (version: [distributed with Ocaml])
...

Я не вижу batteries пакет.


В чем проблема?

1 ответ

Решение

Есть ли причина, по которой вы не используете OPAM? ( https://github.com/OCamlPro/opam)

Установите OPAM, переключитесь на свою любимую версию компилятора 4.0x (например, opam switch 4.00.1) и запустите: opam install batteries, Я рекомендую делать opam install utop и используя utop вместо ванильного верхнего уровня. В любом случае:

Поместите следующее в ваш ~/.ocamlinit

#use "topfind";;
#require "batteries";;
open Batteries;;

Это все, что вам нужно, чтобы батареи работали.

Другие вопросы по тегам