win portable haskell relationship ghc cabal role

portable - ¿Cómo se relacionan los programas `ghc-pkg` y` cabal`?(Haskell)



haskell portable (2)

Como sé, cabal es un programa para administrar la instalación de paquetes como pkg_add de FreeBSD. Pero hay otra herramienta llamada ghc-pkg . No sé por qué hay dos programas diferentes. ¿Cuál es el papel de cada uno de ellos y cómo se relacionan?


Cabal es una biblioteca de construcción y empaquetado para Haskell, tipo de "autorrotrices Haskell". Lee archivos .cabal y los paquetes de Haskell generalmente tienen un archivo Setup.hs que usa Cabal para compilar el paquete. Luego también está el comando cabal proporcionado por el paquete cabal-install. Proporciona comandos para ejecutar el script Setup.hs y algunas funciones de administración de paquetes, como instalar paquetes directamente desde Hackage. Deberías leer esta publicación de blog de Ivan Miljenovic que explica bastante bien el papel de Cabal, cabal-install y Hackage.

ghc-pkg es una herramienta de nivel inferior para buscar en la base de datos de paquetes de GHC. Cabal está diseñado para funcionar con cada compilador de Haskell, mientras que ghc-pkg es obviamente específico para GHC. No puede usar ghc-pkg para compilar nada, solo puede registrar los paquetes que haya creado de otra manera.


cabal es solo una capa de interfaz para ghc-pkg con algunas características adicionales. Solo es importante saber ghc-pkg porque la funcionalidad de desinstalación no se agregó a Cabal, pero se puede hacer directamente con ghc-pkg.