Ошибка: 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,

Другие вопросы по тегам