1

从这个 SO 问题:Ocaml 中的列表理解?,我可以使用 安装理解包opam install pa_comprehension,并在顶级 REPL 中使用该包。

# #require "pa_comprehension";;
# open Batteries;;
# [? 2 * x | x <- 0 -- max_int ; x * x > 3 ?];;
- : int Batteries.Enum.t = <abstr>

那么,我该如何编译代码呢?

4

1 回答 1

4

不幸的是,由于pa_comprehension包名没有以.syntax扩展名结尾,这比它应该做的要难一些。(这个问题仍然没有解决的事实表明,pa_comprehension在现代 OCaml 中使用并不是很流行)。因此,如果没有适当的扩展,我们需要手动完成所有操作。如果您的文件名为pr.ml,那么正确的调用是:

$ ocamlbuild -use-ocamlfind -syntax camlp4o -pkg camlp4,pa_comprehension pr.native

如果不想每次都输入,可以创建_tags文件,内容如下:

$ cat _tags
<**/*> : package(camlp4),syntax(camlp4o),package(pa_comprehension)

在这种情况下,命令行拼写会更容易一些:

$ ocamlbuild -use-ocamlfind pr.native
于 2015-02-26T19:58:10.770 回答