Вот мой ocamlbuild структура на основе проекта:одного модуля OCaml вызывает противоречивые предположения относительно интерфейса
_tags.ml:
true: package(batteries)
Main.mlpack
Stream
Главная/Stream.ml
module MyStream = BatStream
I a м пытается скомпилировать модуль Main
с помощью
ocamlbuild -use-ocamlfind Main.cmo
Сообщение об ошибке выглядит довольно нелогично мне:
+ ocamlfind ocamlc -pack Main/Stream.cmo -o Main.cmo
File "_none_", line 1:
Error: The files Main/Stream.cmi and Main/Stream.cmi
make inconsistent assumptions over interface Stream
Command exited with code 2.
Compilation unsuccessful after building 3 targets (0 cached) in 00:00:00
Это использование OCaml 4.02.1 из OPAM.
Это происходит только при соединении с батареями, поэтому я могу только понять, что существует конфликт между Batteries.Stream
и Main.Stream
. Действительно, если добавить несколько модулей с зависимостями, я могу получить сообщение, как
Error: The files /home/ken/.opam/4.02.1/lib/batteries/batteries.cmi
and Main/Stream.cmi make inconsistent assumptions
over interface Stream
Однако, я бы не ожидал Подмодули конфликтовать.
Почему это происходит? Мне кажется невозможным, что модуль может конфликтовать с ним над интерфейсом.
Вы пытались очистить (т. Е. 'Rm -rf _build')? – Drup
@Drup Действительно, я сделал. Новый проект, содержащий эти три файла, будет генерировать данную ошибку. –