ocaml - 我如何使用 Pgocaml 编译一些东西

标签 ocaml ocamlbuild camlp4

我正在尝试使用 Pgocaml用于我的应用程序中的数据库交互。

这是我正在尝试编译的文件:

let () =
  let dbh = PGOCaml.connect () in
  let insert name salary email =
     PGSQL(dbh) "insert into employees (name, salary, email) values ($name, $salary, $?email)"
  in
  insert "Ann" 10_000_l None;
  insert "Bob" 45_000_l None;
  insert "Jim" 20_000_l None;
  insert "Mary" 30_000_l (Some "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="177a76656e57726f767a677b723974787a" rel="noreferrer noopener nofollow">[email protected]</a>");

  let print_row (id, name, salary, email) =
    let email = match email with Some email -> email | None -> "    -"      
    in Printf.printf "%ld %S %ld %S\n" id name salary email in

  let rows =
    PGSQL(dbh) "select id, name, salary, email from employees"
  in List.iter print_row rows;

  PGOCaml.close dbh

这就是我尝试编译它的方式:

  ocamlbuild  -use-ocamlfind -pkg pgocaml pgex.native

这是我收到的错误:

+ ocamlfind ocamldep -package pgocaml -modules pgex.ml > pgex.ml.depends
File "pgex.ml", line 4, characters 19-97:
Error: Syntax error
Command exited with code 2.

为什么我会收到此错误?

提前致谢!

最佳答案

PG'OCaml 是一个语法扩展,它不是常规的 ocaml 代码,因此您需要采取额外的步骤来让它发挥其魔力。首先,阅读tutorial它还解释了如何使用 pgocaml 编译项目。其次,告诉构建系统 pgex.ml应使用 camlp4 进行预处理- 即创建_tags文件内容为 <pgex.ml>: syntax(camlp4o) .

关于ocaml - 我如何使用 Pgocaml 编译一些东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799436/

相关文章:

ocaml - 从OCaml中的列表中删除元素的标准方法是什么?

ocaml - 使用 'ocamlfind install' 设置 Ocaml 库,然后在 ocamlbuild 中使用该库

ocaml - 为什么用 sexp return 注释类型会导致 Unbound value int_of_sexp?

ocaml - 告诉 ocamlbuild 使用 Core

OCamlbuild 和 camlp4.macro

functional-programming - `[< >]` 在 OCaml 中是什么意思?

ocaml - 如何在 OCaml 中将 Sys.command 的输出作为字符串?

algorithm - OCaml 在列表中插入一个元素

ocaml - 将 ocamlyacc 与 sedlex 结合使用

compiler-errors - LLVM教程OCaml编译错误