В модуле с именем State
у нас есть абстрактный тип t
. Сейчас мы пытаемся создать совершенно отдельный модуль, который содержит функцию, которая принимает State.t
(его тип начинается с State.t -> (* stuff *)
).
Однако, когда мы пытаемся вызвать эту функцию из нашего модуля State
, передавая объект типа t
, мы получаем следующую ошибку:
Error: This expression has type t but an expression was expected of type State.t
State.t is abstract because no corresponding cmi file was found in path.
Мы предполагаем, что это происходит, потому что другой модуль ожидает абстрактный тип, но внутри модуля State
абстрактный тип является конкретным. Наш вопрос: как нам сделать этот объект снова абстрактным, чтобы мы могли передать его в другой модуль?