我已创建我的~/.ocamlinit
,如下所示
let interactive = !Sys.interactive;;
Sys.interactive := false;; (*Pretend to be in non-interactive mode*)
#use "topfind";;
Sys.interactive := interactive;; (*Return to regular interactive mode*)
Toploop.use_silently Format.err_formatter (Filename.concat (Findlib.package_directory "batteries") "battop.ml");;
当我在命令行输入ocaml
时,出现以下错误:
$ ocaml
Objective Caml version 3.12.1
Cannot find file topfind.
File ".ocamlinit", line 6, characters 60-85:
Error: Unbound module Findlib
#
导致此问题的原因是什么?我应该如何解决此问题?
(我在Debian Wheezy)
编辑:我为ocaml设置了别名:
alias ocaml='rlwrap -H /home/nanda/.ocaml_history -D 2 -i -s 10000 ocaml'
答案 0 :(得分:2)
感谢dkim
,我会发布适合我的解决方案。希望这有助于其他人。
为了能够使用包含ocaml-batteries的电池,我遵循了这个过程:
sudo apt-get install ocaml ocaml-batteries-included ocaml-doc ledit rlwrap
需要 rlwrap
或ledit
为OCaml toploop添加readline支持。
在.bashrc
中添加了一个别名,用于保存在ocaml toploop中输入的命令。
alias ocaml='rlwrap -H /home/nanda/.ocaml_history -D 2 -i -s 10000 ocaml'
-H指定历史文件名
-D忽略重复
-i不区分大小写
-s限制存储在此文件中的命令数
如评论中所述,我在尝试调用ocaml解释器时收到此错误。
$ ocaml
Objective Caml version 3.12.1
Cannot find file topfind.
File ".ocamlinit", line 6, characters 60-85:
Error: Unbound module Findlib
#
我收到此错误是因为未正确安装ocaml-findlib软件包。我已经通过安装libfindlib-ocaml-dev
包来解决这个问题:
sudo apt-get install libfindlib-ocaml-dev
对于某些人来说,如上所述here
从源代码安装findlib包时,问题就解决了一些更有帮助的链接: