"未绑定的模块报价"错误,即使在加载camlp4o.cma之后

时间:2016-04-22 05:44:48

标签: ocaml quotations

我是OCaml的新手,我试图按照this tutorial的4.3来定义自定义报价行为。从我所读过的内容来看,加载camlp4o.cma似乎是使报价模块对OCaml可见的原因。所以我在OCaml解释器中尝试了以下内容:

# #load "dynlink.cma";;
# #load "camlp4o.cma";;
        Camlp4 Parsing version 4.02.3

看起来camlp4o.cma已成功加载。所以我继续学习本教程的其余部分:

# let expand _ s =
           match s with
             "PI" -> "3.14159"
           | "goban" -> "19*19"
           | "chess" -> "8*8"
           | "ZERO" -> "0"
           | "ONE" -> "1"
           | _ -> "\"" ^ s ^ "\""
         ;;
val expand : 'a -> string -> string = <fun>
# Quotation.add "foo" (Quotation.ExStr expand);;
Characters 0-13:
  Quotation.add "foo" (Quotation.ExStr expand);;
  ^^^^^^^^^^^^^
Error: Unbound module Quotation

我不确定为什么我会收到此错误。我跳过了什么吗?我在Windows上使用OCaml版本4.02.3,如果这是相关的。

1 个答案:

答案 0 :(得分:1)

http://caml.inria.fr/pub/docs/tutorial-camlp4/index.html下的教程是OLD。它基于版本3.10.0之前的CamlP4。 CamlP4在OCaml 3.10.0完全重写。这个“新”CamlP4有很多不兼容性。

如今人们已经从CamlP4转移到PPX,所以我不确定CamlP4是否值得学习。话虽如此,你可以看到https://github.com/ocaml/camlp4/wiki有关“新”CamlP4的一些文件。杰克·唐纳姆的博客http://ambassadortothecomputers.blogspot.com/也提供了很好的信息。