Ошибка: Camlp4: необработанное исключение: Not_found
Я работаю над примером 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" для компиляции программы.
Я пробовал много разных вещей и сделал поиск в Google, но я не могу понять проблему. Любые советы приветствуются.
1 ответ
Вообще говоря, сообщение об ошибке указывает, что CamlP4 не знает цитату, которую вы использовали, здесь table
, который используется в вашем коде как <:table< ... >>
, Цитаты могут быть добавлены расширениями CamlP4 pa_xxx.cmo
(или же pa_xxx.cma
) модули. Если вы не опечатали имя цитаты, вам не удалось загрузить расширение, которое предоставляет его CamlP4.
Согласно http://ocsigen.org/tuto/manual/macaque, макаки (или лежащие в их основе библиотеки? Я не уверен, так как никогда не использовал их) дают цитату table
, Таким образом, вы должны поручить CamlP4 загрузить соответствующее расширение. Я считаю, что vanilla eliom-destillery минимальна для базового программирования eliom и не распространяется на расширения для Macaque.
На самом деле документ http://ocsigen.org/tuto/manual/macaque указывает на это:
Нам нужно сослаться на макаки в Makefile:
SERVER_PACKAGE := macaque.syntax
Это должно быть имя расширения синтаксиса CamlP4, необходимое для table
,