OCaml: несвязанный модуль из родительского каталога на верхнем уровне

Я пытаюсь загрузить модуль из родительского каталога в интерпретатор верхнего уровня.

#load "../Syntax.cmo";;
open Syntax

let foo = bar

Где бар находится в синтаксисе. У меня есть модуль Синтаксис в родительском каталоге. Загрузка модуля Синтаксис не вызывает никаких проблем, но открытая строка выдает ошибку:

Error: Unbound module Syntax

Я также попытался удалить открытое:

#load "../Syntax.cmo";;
let foo = Syntax.bar

Но это дает мне ту же ошибку, что и синтаксис в родительском каталоге.

Есть ли что-нибудь вокруг этого?

1 ответ

Решение

Вы не должны использовать относительные пути, вместо этого используйте #directory директива:

#directory "..";;
#load "Syntax.cmo";;
let foo = Syntax.bar;;

Более того, определите свою библиотеку с помощью oasis или других высокоуровневых инструментов и используйте #require загружать ваши библиотеки, вместо того, чтобы заниматься низкоуровневыми директивами.

Другие вопросы по тегам