错误:Camlp4:未捕获异常:Not_found

时间:2014-03-10 02:10:33

标签: ocaml camlp4

我正在研究Ocsigen示例(http://ocsigen.org/tuto/manual/macaque)。

尝试编译程序时出错,如下所示。

File "testDB.ml", line 15, characters 14-81 (end at line 18, character 4):
While finding quotation "table" in a position of "expr":
Available quotation expanders are:
svglist (in a position of expr)
svg (in a position of expr)
html5list (in a position of expr)
html5 (in a position of expr)
xhtmllist (in a position of expr)
xhtml (in a position of expr)

Camlp4: Uncaught exception: Not_found

我的代码是:

 module Lwt_thread = struct
 include Lwt
 include Lwt_chan
 end
 module Lwt_PGOCaml = PGOCaml_generic.Make(Lwt_thread)
 module Lwt_Query = Query.Make_with_Db(Lwt_thread)(Lwt_PGOCaml)

 let get_db : unit -> unit Lwt_PGOCaml.t Lwt.t =
 let db_handler = ref None in
 fun () ->
   match !db_handler with
      | Some h -> Lwt.return h
      | None -> Lwt_PGOCaml.connect ~database:"testbase" ()

let table = <:table< users (
  login text NOT NULL,
  password text NOT NULL
) >>
..........

我用eliom-destillery生成基本文件。 我使用“make”来编译程序。

我尝试了很多不同的东西,并进行了谷歌搜索,但我无法弄清楚问题。任何提示都非常感谢。

1 个答案:

答案 0 :(得分:0)

一般来说,错误消息表明CamlP4不知道您使用的引用,table,在您的代码中使用<:table< ... >>。可以通过CamlP4扩展pa_xxx.cmo(或pa_xxx.cma)模块添加引用。除非您输入了引号名称的拼写错误,否则您无法加载一个将其提供给CamlP4的扩展名。

根据http://ocsigen.org/tuto/manual/macaque,Macaque(或其底层库?我不确定,因为我从未使用它)提供引用table。所以你必须指示CamlP4加载相应的扩展名。我相信香草eliom-destillery对于基本的eliom编程是最小的,并不包括Macaque的扩展。

实际上,文件http://ocsigen.org/tuto/manual/macaque指出了它:

  

我们需要在Makefile中引用猕猴:

SERVER_PACKAGE := macaque.syntax

这应该是table所需的CamlP4语法扩展名。