Ответ 1
Cabal - это библиотека для строительства и упаковки Haskell, своего рода "Haskell autotools". Он читает файлы .cabal
, а пакеты Haskell обычно имеют файл Setup.hs
, который использует Cabal для сборки пакета. Затем также имеется команда cabal
, предоставляемая пакетом инсталляции cabal. Он предоставляет команды для запуска Setup.hs
script и некоторые функции управления пакетами, такие как установка пакетов непосредственно из Hackage. Вы должны прочитать этот блог-почтой Иван Милехович, в котором очень хорошо объясняется роль Cabal, cabal-install и Hackage.
ghc-pkg
- это инструмент нижнего уровня для подкачки базы данных пакетов GHC. Cabal предназначен для работы с каждым компилятором Haskell, тогда как ghc-pkg явно специфичен для GHC. Вы не можете использовать ghc-pkg для сборки чего-либо, вы можете просто зарегистрировать пакеты, которые вы создали в противном случае.