从这个 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>
那么,我该如何编译代码呢?
从这个 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>
那么,我该如何编译代码呢?
不幸的是,由于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