With respect to how packages are created, installed and used in Haskell, what is the relationship between ghc-pkg and cabal?
What are their roles - when would you use one, over the other, or use both?
Are they complementary tools, competitive tools, or simply tools that do different jobs?