2013-10-15 77 views
0

在編寫一個應用程序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的庫數據記錄(我從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來理解,但我沒有成功。

回答

2
  1. 我覺得這事在數據記錄庫,並在一些版本> 0.3函子Datalog.Logic.Make已經改變需要與申報值lockunlock模塊參數。所以,這是版本問題。

  2. 關於臨時文件。正如你所看到的,它的名字由ocaml文字組成,pp這意味着預處理器和一些編號。 OCaml中的預處理器通常以這種方式工作:讀取輸入源文件和寫入輸出源文件。這就是爲什麼創建一些臨時文件的原因。

+0

太棒了!謝謝你是對的我改變了版本,我通過了錯誤,但不幸的是我得到了以下錯誤「錯誤:不受限制的值Logic.db_goal」;再次如果有人可以幫助我,我將不勝感激。對不起,我在Ocaml很新。 – pafede2

+0

我認爲Stack Overflow的具體問題還不夠。您可以嘗試在Freenode IRC的#ocaml頻道中找到一些靈感。 – Kakadu