Не удается загрузить батареи с помощью 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;;
Это все, что вам нужно, чтобы батареи работали.