从终端编译和 运行 Ocaml 脚本
Compiling and Running Ocaml Script from the Terminal
我在文件夹中存储了名为 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
,但该建议似乎完全是文体。对于我正在参加的class,我必须这样写。
如果有人能向我解释我应该如何以不同的方式进行编译和 运行ning,我将不胜感激。我尝试按照其他一些指南的建议使用 ocamlopt
代替,但是当我 运行 它时,结果没有生成可执行文件。
ocaml
命令是 OCaml 的 REPL。命令行如下所示:
ocaml [ object-files ] [ script-file ]
目标文件是编译的(字节码)模块,由ocamlc
命令生成。这些文件以 .cmo
结尾。脚本文件是OCaml源代码文件,以.ml
.
结尾
注意只允许一个脚本文件。
您说您正在使用的命令有两个脚本文件,没有目标文件。因此,它不起作用也就不足为奇了。在我的实验中,ocaml
所做的只是 运行 两个脚本文件中的第一个。我相信这可以解释您所看到的。你的一个文件产生输出,如果你先给它,它将是 运行。另一个不产生输出,所以当那个文件先给出时没有输出。
您可能应该做的是为 Assert
模块生成一个 .cmo
文件。
看起来像这样:
$ ocamlc -c assert.mli assert.ml test.mli
那么你应该 运行 ocaml
一个目标文件和一个脚本文件,像这样:
$ ocaml assert.cmo test.ml
我在文件夹中存储了名为 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
,但该建议似乎完全是文体。对于我正在参加的class,我必须这样写。
如果有人能向我解释我应该如何以不同的方式进行编译和 运行ning,我将不胜感激。我尝试按照其他一些指南的建议使用 ocamlopt
代替,但是当我 运行 它时,结果没有生成可执行文件。
ocaml
命令是 OCaml 的 REPL。命令行如下所示:
ocaml [ object-files ] [ script-file ]
目标文件是编译的(字节码)模块,由ocamlc
命令生成。这些文件以 .cmo
结尾。脚本文件是OCaml源代码文件,以.ml
.
注意只允许一个脚本文件。
您说您正在使用的命令有两个脚本文件,没有目标文件。因此,它不起作用也就不足为奇了。在我的实验中,ocaml
所做的只是 运行 两个脚本文件中的第一个。我相信这可以解释您所看到的。你的一个文件产生输出,如果你先给它,它将是 运行。另一个不产生输出,所以当那个文件先给出时没有输出。
您可能应该做的是为 Assert
模块生成一个 .cmo
文件。
看起来像这样:
$ ocamlc -c assert.mli assert.ml test.mli
那么你应该 运行 ocaml
一个目标文件和一个脚本文件,像这样:
$ ocaml assert.cmo test.ml