我有一个名为assert.ml
,assert.mli
,test.ml
和test.mli
的文件存储在一个文件夹中。 assert
我想你是把它称为图书馆文件 - 它是我下载但没有写自己的东西。 test.ml
是包含脚本
;; open Assert
;; print_endline "test"
在终端中,我导航到包含文件夹并运行
$ ocamlc -c assert.mli test.mli
$ ocaml assert.ml test.ml
结果没有任何结果。但是,如果我从脚本中删除;; open Assert
行并运行
$ ocaml test.ml
然后打印出来。
作为一个说明,我有些人告诉我不要将开放命令写为;; open Assert
,但建议似乎完全是风格的。我必须以这种方式为我上课。
如果有人能向我解释我应该如何编译和运行,我会很感激。我尝试过其他一些指南'建议使用ocamlopt
而不是当我运行它时,没有生成可执行文件。
答案 0 :(得分:4)
ocaml
命令是OCaml的REPL。命令行如下所示:
ocaml [ object-files ] [ script-file ]
目标文件是一个编译(字节码)模块,由ocamlc
命令生成。这些文件以.cmo
结尾。脚本文件是OCaml源代码的文件,以.ml
结尾。
请注意,只允许使用一个脚本文件。
您说您正在使用的命令有两个脚本文件而没有目标文件。因此,它不起作用也就不足为奇了。在我的实验中,ocaml
所做的只是两个脚本文件中的第一个。我相信这解释了你所看到的。您的一个文件会生成输出,如果您先输入它,它将会运行。另一个没有产生输出,因此首先给出该文件时没有输出。
您应该做的是为.cmo
模块生成Assert
文件。
看起来像这样:
$ ocamlc -c assert.mli assert.ml test.mli
然后你应该用一个目标文件和一个脚本文件运行ocaml
,如下所示:
$ ocaml assert.cmo test.ml