Question

While compiling an OCaml application I get the following error:

  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.

My guess is that the error is releated with the OCaml library Datalog (I've installed the version 0.3 from here) because the line 308 in the file is /tmp/ocamlpp466ee0 the first one in the following code

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)

I would really appreciate if someone could help me to know what I am doing wrong.

Moreover, I would like to undestand why the file /tmp/ocamlpp466ee0 is generated each time I execute 'make'? I tried to understand by reading the Makefile but I did not succeed.

Was it helpful?

Solution

  1. I think that something have changed in Datalog library and in some version > 0.3 functor Datalog.Logic.Make requires module argument with values lock and unlock declared. So, it's version problem.

  2. About temporary file. As you can see, its name consists of ocaml literal, pp which means preprocessor and some number. Preprocessors in OCaml usually work this way: they read input source file and write output source files. That's why some temporary files are created.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top