Независимое подмножество комплектов кабальных комплектов
Учитывая набор пакетов cabal, существует ли способ автоматически вычислять подмножество независимых пакетов? Другими словами, подмножество пакетов, которое будет достаточным для их установки.
Для [network,parsec]
ответ [network]
, потому что он network
зависит от parsec
.
Для [network,containers]
ответ [network,containers]
, потому что:
-
network
не зависит от containers
- все
network
зависимости не зависят от containers
-
containers
не зависит от network
- все
containers
зависимости не зависят от network
Нетрудно найти ответ на 2 пакета. Что действительно интересно, так это найти независимый набор для [containers, directory, filepath, lens, xml, http-conduit, regex-posix, monad-control, unordered-containers, glib, hashable, hspec, split, aeson, attoparsec, stm, QuickCheck]
.
От ответа я ожидаю некоторую функцию, основанную на библиотеке cabal, например ∷ [Packages] → IO [Packages]
.
Ответы
Ответ 1
Cabal переходит к более NPM-подобной модели, что значительно упростит разрешение зависимостей. Каждый установленный пакет будет хранить локальную копию своих зависимостей, торгуя небольшим дисковым пространством для головной боли при установке нескольких глобальных пакетов с требованиями обоюдного исключения версий пакета.
В этой модели подмножество пакетов, необходимых для установки набора пакетов ==
, который установлен. Хотя одна из них может быть зависимой от другой, каждая установленная копия будет хранить свою собственную локальную копию своих зависимостей, поэтому Cabal больше не будет рассматривать зависимость, установленную таким образом.