【问题标题】:Datalog require field `unlock'数据记录需要字段“解锁”
【发布时间】:2013-10-15 14:28:12
【问题描述】:

编译 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 来理解,但没有成功。

【问题讨论】:

    标签: ocaml datalog


    【解决方案1】:
    1. 我认为 Datalog 库中发生了一些变化,并且在某些版本中 > 0.3 仿函数 Datalog.Logic.Make 需要声明值 lockunlock 的模块参数。所以,是版本问题。

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

    【讨论】:

    • 太棒了!谢谢你是对的我更改了版本并通过了错误但不幸的是我收到了以下错误“错误:未绑定值Logic.db_goal”;再次,如果有人可以帮助我,我将不胜感激。抱歉,我是 Ocaml 的新手。
    • 我认为这对于 Stack Overflow 来说还不够具体。您可以尝试在 Freenode IRC 上的#ocaml 频道中找到一些灵感。
    猜你喜欢
    • 2019-02-09
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    相关资源
    最近更新 更多