gawi
gawi

Reputation: 14217

Specifying package name for module-related commands in ghci

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

Answers (2)

keegan
keegan

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

Thomas M. DuBuisson
Thomas M. DuBuisson

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

Related Questions