1

我成功安装ocaml-batteries-includedfindlib.

我可以毫无问题地执行“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", "").

此外,如果我这样做#listocaml 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包裹。


有什么问题?

4

1 回答 1

4

您不使用 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;;

这就是让电池工作所需的一切。

于 2013-02-19T07:24:27.820 回答