Исходя из небольшого конкретного опыта, но общего стремления к надежности, руководящий принцип для зависимостей пакетов, вероятно, должен быть
От каждого в соответствии с их способностями;каждому в соответствии с их потребностями.
Хорошо бы сохранить зависимости пакета до минимума, необходимого для его существенной функциональности.Это предполагает вариант 3 или вариант 4 для меня.Конечно, очень тяжело раскалывать посылку.Если варианты способны выразить обусловленные условия, тогда вариант 4 звучит как разумный подход, основанный на эффективном использовании языка, чтобы сказать, что вы имеете в виду.нужно щелкнуть, чтобы получить набор для тестирования, а также основные функции.
Также ясно, что здесь есть место для доработки.Удивительно, что Cabal работает так же хорошо, как и он, но он может допускать более сложные понятия «пакет», возможно, в духе модульной системы SML.Преобразуя зависимости в типы функций, мы в основном пишем
simplePackage :: (Dependency1, .., Dependencyn) -> Deliverable
, но можно представить более сложные комбинации продуктов и функций, например
fancyPackage :: BasicDependency -> (BasicDeliverable, HelpfulExtras -> Gravy)
. А пока выберите вариант, который наиболееточно отражает фактическую сделку.И расскажите нам об этом, чтобы мы могли достичь этого консенсуса.