* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * [$ 1003].огромный бесконфликтный набор пакетов-ревизий, и назовите его snapshot
.Таким образом, сопровождающий пакета вынужден обновлять зависимости своих пакетов, чтобы он не вступал в конфликт с недавними snapshot
.
Я должен сказать, что этот дизайн слишком идеален для работы в реальном мире..
Для сравнения, NPM (менеджер пакетов NodeJS) подходит к этой цели более практичным способом: он допускает избыточность.В случае с бриллиантами, например a -> b, c; b -> d(v1); c -> d(v2)
, NPM просто устанавливает две разные версии d
отдельно для b
и c
.Таким образом, пользователи, использующие пакеты, могут зависеть от пакета, такого как черный ящик, не нужно учитывать, есть ли конфликтующие-глубокие зависимости между его зависимостями.
Мне интересно, есть ли практическая причина, почему стекне предназначен для разрешения избыточных версий пакета.Возможно ли реализовать такой менеджер пакетов для Haskell?Что самое сложное в его реализации?