gpt4 book ai didi

ocaml - 从终端编译和运行 Ocaml 脚本

转载 作者:行者123 更新时间:2023-12-02 00:41:37 27 4
gpt4 key购买 nike

我有名为 assert.mlassert.mlitest.mltest.mli 的文件存储在一个文件夹中。 assert 是我猜你会称它为库文件——它是我下载但不是我自己编写的。 test.ml 是包含脚本的文件

;; open Assert 
;; print_endline "test"

在终端中,我导航到包含的文件夹并运行

$ ocamlc -c assert.mli test.mli
$ ocaml assert.ml test.ml

结果什么也没有发生。但是,如果我删除 ;;从脚本中打开 Assert 行并运行

$ ocaml test.ml

然后打印出来。

请注意,有些人告诉我不要将打开命令写成 ;;打开 Assert 但建议似乎完全是文体。对于我正在上的课,我必须这样写。

如果有人能向我解释我应该如何以不同的方式编译和运行,我将不胜感激。我尝试按照其他一些指南的建议使用 ocamlopt 代替,但是当我运行它时,结果没有生成可执行文件。

最佳答案

ocaml 命令是 OCaml 的 REPL。命令行如下所示:

ocaml [ object-files ] [ script-file ]

目标文件是编译(字节码)模块,由ocamlc 命令生成。这些文件以 .cmo 结尾。脚本文件是以.ml结尾的OCaml源代码文件。

请注意,只允许使用一个脚本文件。

你说你正在使用的命令有两个脚本文件,没有目标文件。因此,它不起作用也就不足为奇了。在我的实验中,ocaml 所做的只是运行两个脚本文件中的第一个。我相信这可以解释您所看到的。您的其中一个文件会产生输出,如果您先给出它,它就会运行。另一个不产生输出,因此当该文件首先给出时没有输出。

您可能应该做的是为 Assert 模块生成一个 .cmo 文件。

看起来像这样:

$ ocamlc -c assert.mli assert.ml test.mli

然后你应该用一个目标文件和一个脚本文件运行ocaml,像这样:

$ ocaml assert.cmo test.ml

关于ocaml - 从终端编译和运行 Ocaml 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46333966/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com