Dato un insieme di pacchetti di cabali, esiste un modo per calcolare automaticamente un sottoinsieme di pacchetti indipendenti? In altre parole, sottoinsieme di pacchetti che saranno sufficienti per installarli tutti.Sottoinsieme indipendente di pacchetti di cabine impostati
Per [network,parsec]
la risposta è [network]
perché network
dipende parsec
.
Per [network,containers]
la risposta è [network,containers]
perché:
network
non dipendecontainers
- tutti
network
s dipendenze non dipendecontainers
containers
non dipendenetwork
- tutti
containers
s le dipendenze non dipendono danetwork
Non è difficile trovare la risposta per 2 pacchetti. La cosa veramente interessante è scoprire il set indipendente per [containers, directory, filepath, lens, xml, http-conduit, regex-posix, monad-control, unordered-containers, glib, hashable, hspec, split, aeson, attoparsec, stm, QuickCheck]
.
Dalla risposta mi aspetto qualche funzione basato sulla libreria cabala come ∷ [Packages] → IO [Packages]
.
Sembra che "Distribution.Client.PackageIndex.dependencyClosure" sia ciò di cui hai bisogno. –
Intendi ['Distribution.Simple.PackageIndex.dependencyClosure'] (http://hackage.haskell.org/packages/archive/Cabal/latest/doc/html/Distribution-Simple-PackageIndex.html#v:dependencyClosure) ? –
La versione Git di cabal-install ('Distribution.Client. *') È ora anche una libreria. –