0

opam我正在尝试通过设置,utop和 Core 模块来跟随 Real World OCaml 。我已经按照这些指示取得了一些成功。特别是,当我在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,并按照opam我不知道的问题通过 AUR 进行安装。我还能够根据安装说明构建和安装所有软件包,而没有任何我知道的错误。

4

1 回答 1

2

这是因为 utop 在运行文件之前执行脚本.ocamlinit文件。我不确定它是错误还是功能,但这就是代码的编写方式。事实上,大多数用户从 emacs 运行 utop 并使用C-c C-s.

如果您对 emacs 不满意,我可以建议使用以下工作流程:

  1. 从头开始
  2. 在您喜欢的编辑器中进行一些编码
  3. 在 utop 中加载代码#use "your_file.ml";;
  4. 玩它,如果不满意 goto 2
于 2014-06-07T02:54:22.970 回答