从这个SO问题:List Comprehension in 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>
然后,我该如何编译代码?
答案 0 :(得分:4)
不幸的是,由于pa_comprehension
包名称未以.syntax
扩展名结束,因此这比它应该更难。 (事实上这个问题仍然没有解决,表明在现代OCaml中使用pa_comprehension
并不是很受欢迎)。因此,如果没有适当的扩展,我们需要手动完成所有操作。如果您的文件名为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