В настоящее время я создаю тестовую библиотеку в Standard ML (используя Poly/ML в качестве интерпретатора). У меня есть следующая структура каталогов:
project/a.sml
project/src/b.sml
project/src/c.sml
...
Где a.sml
— это просто набор вызовов для использования
use "src/b.sml"
use "src/c.sml"
...
b.sml
, c.sml
и т. д. - все определения структуры, подобные этому
structure ComponentX
struct
...
end
которые образуют красивые, логически разделенные компоненты библиотеки. Иногда я также создаю один модуль в одном файле, а затем добавляю подструктуру в тот же модуль в другом файле.
Затем я могу использовать тестовую библиотеку в корневом каталоге проекта, вызвав use "a.sml"
.
Однако я не могу использовать код вне его собственного каталога, что немного проблематично. Например, предположим, что я в родительском каталоге project
. Если я затем вызову use "project/a.sml"
, последующие вызовы use "src/x.sml"
попытаются найти каталог src
в родительском каталоге (которого не существует).
Есть ли способ сделать относительный use
, или есть лучший способ структурировать это в целом?