Поддерживает ли dune шаблоны глобусов для библиотек?
Фон
Я пытаюсь выставить две библиотеки из одного каталога — одну для некоторых интерфейсов, а другую для их реализации.
Например, предположим, что у меня есть следующие источники:
foo_api.ml
module type Foo = sig
val foo: string
end
foo.ml
module FooImpl: Foo =
let foo = "foo"
end
В моем файле я хочу представить их как отдельные библиотеки — API и реализацию. Мне бы очень хотелось иметь возможность использовать здесь глобусы для указания модулей, так как я планирую использовать этот шаблон для других модулей, например.Bar.ml
иBar_api.ml
.
Вопрос
Поддерживает ли какой-либо способ подстановки (или регулярного выражения) для модулей?
(library
(name foo_lib_api)
(modules (glob_files "./*_api.ml")))
(library
(name foo_lib_implementation)
(modules (:standard \ (glob_files "./*_api.ml"))))
Приведенный выше синтаксис не работает, и я не нашел ничего работающего. Возможно, я пытаюсь использоватьdune
как я бы использовалbazel
, что позволило бы мне использоватьglob
илиfilegroup
.
1 ответ
Dune не поддерживает шаблоны глобусов в разделах модулей.
Более идиоматической альтернативой было бы наличие одного каталога, преимущество которого заключается в том, что он позволяет отделить имена модулей и библиотек.