Поддерживает ли 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 не поддерживает шаблоны глобусов в разделах модулей.

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

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