(Ocaml) ошибка несвязанного модуля в визуальном коде
Я только начал изучать Ocaml. Я использую визуальный код в качестве своей IDE в Ubuntu, и у меня установлены расширение OCaml и merlin.
и у меня есть следующая проблема -
папка моей рабочей области содержит только 2 файла: a.ml и b.ml.
В файле a.ml я определил модуль с именем "COOL", а в файле b.ml я написал:
~ b.ml ~
open COOL;;
Я получаю сообщение об ошибке "Несвязанный модуль COOL merlin"
Есть ли способ заставить его видеть модуль в файле a.ml? Я попытался найти решение, я увидел что-то с makefile и.merlin и сборкой B, но я этого не понял, у меня нет ничего, кроме двух файлов, которые я упомянул. Я был бы счастлив, если бы кто-нибудь сказал мне, что именно нужно сделать, чтобы этот небольшой пример работал.
1 ответ
Tl ; доктор: делатьocamlc -c a.ml
(или любой другой вашей команды компиляции), чтобы сгенерировать a.cmi
файл, который Мерлин будет использовать для получения списка символов, определенных в модуле A
.
Помимо того, что в b.ml
ваш модуль действительно назван A.COOL
(если только ты не open A
перед open COOL
), как упомянул glennsl, дело в том, что merlin
насколько я знаю, только наблюдает за текущим редактируемым файлом, т.е. b.ml
в твоем случае. Таким образом, чтобы иметь доступ к внешним символам, вам необходимо скомпилировать другие файлы (или, по крайней мере, их соответствующие.mli
если они существуют), чтобы иметь соответствующие .cmi
файлы, доступные Мерлину.
Это подразумевается в параграфе документации, описывающей пути сборки, в котором говорится, что "[merlin] должен знать, где найти cmi-файлы других модулей вашего проекта", т.е. эти файлы должны существовать в первую очередь.