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

Как связаны программы "ghc-pkg" и "cabal"? (Haskell)

Как я знаю, cabal - это программа для управления установкой пакетов, таких как FreeBSD pkg_add. Но есть еще один инструмент под названием ghc-pkg. Я не знаю, почему существуют две разные программы. Какова роль каждого из них и как они связаны?

4b9b3361

Ответ 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 для сборки чего-либо, вы можете просто зарегистрировать пакеты, которые вы создали в противном случае.

Ответ 2

cabal - это всего лишь интерфейсный слой для ghc-pkg с некоторыми дополнительными функциями. Важно знать ghc-pkg, поскольку функциональность удаления не была добавлена ​​в cabal, но может быть выполнена непосредственно с помощью ghc-pkg.