我正在研究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”来编译程序。
我尝试了很多不同的东西,并进行了谷歌搜索,但我无法弄清楚问题。任何提示都非常感谢。
答案 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语法扩展名。