"Unbound module quotation" 错误,即使在加载后 camlp4o.cma

"Unbound module quotation" error, even after loading camlp4o.cma

我是 OCaml 的新手,我正在尝试按照 this tutorial 的 4.3 来定义自定义引用行为。从我读过的内容来看,加载 camlp4o.cma 似乎是使 Quotation 模块对 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 版。

http://caml.inria.fr/pub/docs/tutorial-camlp4/index.html 下的教程是旧的。它基于 3.10.0 版本之前的 CamlP4。 CamlP4 在 OCaml 3.10.0 中被完全重写。 "new" CamlP4 有很多不兼容性。

现在人们已经从 CamlP4 转向 PPX,所以我不确定 CamlP4 是否值得学习。话虽这么说,你可以看到 https://github.com/ocaml/camlp4/wiki for some documentations of the "new" CamlP4. Jake Donham's blog http://ambassadortothecomputers.blogspot.com/ 也提供了很好的信息。