2013-10-15 2 views
0

나는 다음과 같은 오류를 내려면 OCaml의 응용 프로그램을 컴파일하는 동안 :데이터 로그 필드 '잠금 해제'를 요구

내 추측이 오류가 OCaml의 라이브러리 데이터 로그와 releated되는 것을
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. 

(내가 here에서 버전 0.3을 설치 한을) 파일의 라인 (308)은 누군가가 내가 뭘 잘못 알고 나를 도울 수 있다면 정말 감사하겠습니다 다음 코드

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) 

에서/tmp를/ocamlpp466ee0 처음이기 때문이다.

또한 '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