我试图通过设置opam
,utop
和核心模块来跟随Real World OCaml。 I've followed these directions取得了一些成功。特别是,当我在没有指定要加载的文件的情况下运行utop
时,我可以毫无问题地加载Core:
[dswain@Dupree scratch]$ utop
Welcome to utop version 1.12 (using OCaml version 4.01.0)!
Findlib has been successfully loaded. Additional directives:
...
utop # open Core;;
utop #
到目前为止一切顺利。现在,如果我尝试使用相同的代码从命令行加载脚本:
[dswain@Dupree scratch]$ cat test.ml
open Core.Std;;
[dswain@Dupree scratch]$ utop test.ml
File "test.ml", line 1, characters 0-13:
Error: Unbound module Core
[dswain@Dupree scratch]$
我认为这是我在某个地方犯的配置错误,但我不太确定在哪里。
我尝试重新安装ocaml
,opam
,utop
和core
无济于事。我有以下配置更改,我知道opam init
在安装过程中做了:
〜/ .ocamlinit:
#use "topfind";;
#thread;;
#camlp4o;;
#require "core.top";;
#require "core.syntax";;
〜/ .bash_profile中
# OPAM configuration
. /home/dswain/.opam/opam-init/init.sh > /dev/null 2> /dev/null || true
eval `opam config env`
我正在运行Arch Linux,并按照步骤通过AUR安装opam
,而我没有发现任何问题。我也能够建立和从安装说明中安装所有软件包,没有任何我知道的错误。
答案 0 :(得分:2)
这是因为utop在运行.ocamlinit
文件之前执行脚本文件。我不确定它是一个错误还是一个功能,但这就是编写代码的方式。实际上,大多数用户从emacs运行utop并使用C-c C-s
将代码片段发送到utop。
如果您对emacs不满意,我建议您使用以下工作流程:
#use "your_file.ml";;
2
。