Reputation: 14217
Is there a way to specify the package name for a module for the :browse
, :load
or :module
commands in ghci (version 6.12.1) ?
Some module names are ambiguous:
Prelude> :module Control.Monad.Cont
<no location info>:
Ambiguous module name `Control.Monad.Cont':
it was found in multiple packages: mtl-1.1.0.2 monads-fd-0.1.0.2
Is setting the -hide-package
option the only thing I can do to avoid the ambiguity?
Upvotes: 22
Views: 6036
Reputation: 1617
Is setting the
-hide-package
option the only thing I can do to avoid the ambiguity?
You can use ghc-pkg
, e.g.
$ ghc-pkg hide monads-fd
This is like setting -hide-package
on every subsequent ghc
invocation. Packages explicitly depending on monads-fd
via Cabal will not be affected, but everything else is. Watch out!
Upvotes: 15
Reputation: 64740
As far as I know, yes. But it doesn't have to be a big deal, you can do this inside ghci:
Prelude Data.List> :set -hide-package mtl
package flags have changed, resetting and loading new packages...
Prelude> import Control.Monad.Cont
Prelude Control.Monad.Cont>
There was also a line-item on GHC-7 change log that made me think package imports would work on the command line, but it doesn't seem to yet (see below). The change comment said something like "full import syntax supported in GHCi", which must exclude extensions I suppose.
$ ghci-7.0.0.20100924 -XPackageImports
GHCi, version 7.0.0.20100924: http://www.haskell.org/ghc/ :? for help
...
Prelude Data.List> import "mtl" Control.Monad.Cont
<no location info>:
Ambiguous module name `Control.Monad.Cont':
it was found in multiple packages: mtl-1.1.1.0 monads-fd-0.1.0.2
Upvotes: 33