数据记录需要字段“解锁”

时间:2013-10-15 14:28:13

标签: ocaml datalog

在编译OCaml应用程序时,我收到以下错误:

  File "/tmp/ocamlpp466ee0", line 308, characters 34-233:
  Error: Signature mismatch:
   ...
   The field `unlock' is required but not provided
   The field `lock' is required but not provided
  Command exited with code 2.

我的猜测是错误与OCaml库Datalog(我从here安装了0.3版本)相关,因为文件中的第308行是/ tmp / ocamlpp466ee0,代码如下所示

module Logic = Datalog.Logic.Make(struct
  type t = atom
  let equal = eq_atom
  let hash = hash_atom
  let to_string a = Utils.sprintf "%a" pp_atom a
  let of_string s = atom_of_json (Json.from_string s)
end)

如果有人能帮助我知道我做错了什么,我真的很感激。

此外,我想说明为什么每次执行'make'时都会生成文件/ tmp / ocamlpp466ee0?我试着通过阅读Makefile来理解,但我没有成功。

1 个答案:

答案 0 :(得分:2)

  1. 我认为Datalog库和某些版本>中的内容已经发生了变化。 0.3仿函数Datalog.Logic.Make需要声明值lockunlock的模块参数。所以,这是版本问题。

  2. 关于临时文件。如您所见,它的名称由ocaml文字,pp组成,这意味着预处理器和一些数字。 OCaml中的预处理器通常以这种方式工作:它们读取输入源文件和写入输出源文件。这就是创建一些临时文件的原因。