2015-05-01 4 views
2

Я работаю над проектом в OCaml, но у меня проблема при компиляции. У меня есть "Unbound type constructor Door.position". Я компилирую с make-файлом. door.mli:Конструктор Unbound type OCaml с другим файлом

module Door : sig 
    type position 
    type state 
    type door 

    val create : position -> state -> door 
    val getState : door -> state 
    val setState : door -> state -> door 
    val getPosition : door -> position 
    val setPosition : door -> position -> door 
    val isOpen  : door -> bool 
end;; 

Файл содержит ошибки, case.mli:

module Case : sig 
    type case 

    val create : int -> int -> case 
    val getDoor : case -> Door.position -> Door.door 
end;; 

Я не знаю, где проблема.

+0

Возможный дубликат [проблема с загрузкой Strange модуля в OCaml] (http://stackoverflow.com/questions/14876228/strange-module-loading-issue-in-ocaml) – Virgile

ответ

2

В OCaml весь код, помещенный в файл foo.ml (или foo.mli), неявно упакованы в модуль Foo. В вашем случае, если у вас есть door.mli, который содержит модуль с именем Door, это означает, что извне он может быть доступен только как Door.Door, то есть вам нужно получить его с именем файла.

Короче говоря, это означает, что в вашем файле mli вам не нужно писать module Door : sig, так как он уже неявно находится там. Просто напишите свою подпись.

Смежные вопросы