Подтвердить что ты не робот

Независимое подмножество комплектов кабальных комплектов

Учитывая набор пакетов 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].

4b9b3361

Ответ 1

Cabal переходит к более NPM-подобной модели, что значительно упростит разрешение зависимостей. Каждый установленный пакет будет хранить локальную копию своих зависимостей, торгуя небольшим дисковым пространством для головной боли при установке нескольких глобальных пакетов с требованиями обоюдного исключения версий пакета.

В этой модели подмножество пакетов, необходимых для установки набора пакетов ==, который установлен. Хотя одна из них может быть зависимой от другой, каждая установленная копия будет хранить свою собственную локальную копию своих зависимостей, поэтому Cabal больше не будет рассматривать зависимость, установленную таким образом.