
On Thu, Feb 18, 2021 at 09:15:53PM +0000, Richard Eisenberg wrote:
On Feb 18, 2021, at 3:48 PM, Viktor Dukhovni
wrote: $ cabal repl -v0 -z --repl-options -package=iproute --repl-options -XOverloadedStrings
Yes, but it's so, so much easier just to say `ghci`. And then I can pass lots of options to `ghci` directly when I want to. And I don't have to spend time writing and maintaining wrapper scripts.
I was reminded of this thread because I just saw yet another post (this time on Haskell Discourse) from a user confused about how the v1-style global package database is supposed to work these days. In this thread we had a few people mention that they prefer the "global package database" style. I'd like to improve my understanding of why people prefer that style. I believe it was only Richard who explained his rationale (above). For me personally, "global package database" style was useful because I could "cabal install" a package and then "ghc" or "ghci" would have it immediately available. However, I have since given up trying to get that style to work and now I use the "--build-depends" or "create a temporary cabal package" approach[0]. So what are the benefits of the "global package database" workflow style? Is it just that cabal -z repl --package QuickCheck --repl-options="whatever" is more of a pain to type than ghci "whatever" and that creating a .cabal file and running "cabal build" is more of a pain than typing "ghc", or is there something fundamental that the "global package database" supports that cabal v2-style does not? Tom [0] http://h2.jaguarpaw.co.uk/posts/how-i-use-cabal/