haskell - mac - instalar cabal
Conjunto independiente de paquetes cabal (1)
Cabal se está moviendo a un modelo más similar al NPM, lo que hará que la resolución de dependencia sea mucho más simple. Cada paquete instalado guardará una copia local de sus dependencias, intercambiando un poco de espacio en disco para el dolor de cabeza de la instalación de múltiples paquetes globales con demandas de versiones de paquetes mutuamente excluyentes.
Según este modelo, el subconjunto de paquetes requeridos para instalar un conjunto de paquetes ==
ese conjunto. Aunque uno puede ser una dependencia del otro, cada copia instalada guardará su propia copia local de sus dependencias, por lo que Cabal ya no considerará la dependencia instalada de esa manera.
Dado un conjunto de paquetes cabal, ¿hay alguna manera de calcular automáticamente un subconjunto de paquetes independientes? En otras palabras, subconjunto de paquetes que serán suficientes para instalarlos todos.
Para [network,parsec]
la respuesta es [network]
porque la network
depende de parsec
.
Para [network,containers]
la respuesta es [network,containers]
porque:
-
network
no depende de loscontainers
- todas las dependencias de la
network
no dependen de loscontainers
-
containers
no depende de lanetwork
- todas las dependencias de los
containers
no dependen de lanetwork
No es difícil encontrar la respuesta para 2 paquetes. Lo que es realmente interesante es encontrar un conjunto independiente para [containers, directory, filepath, lens, xml, http-conduit, regex-posix, monad-control, unordered-containers, glib, hashable, hspec, split, aeson, attoparsec, stm, QuickCheck]
.
De la respuesta espero alguna función basada en la biblioteca cabal como ∷ [Packages] → IO [Packages]
.