2010-10-12 19 views
22

Existe-t-il un moyen de spécifier le nom du module pour les commandes :browse, :load ou :module dans ghci (version 6.12.1)?Spécification du nom du module pour les commandes liées au module dans ghci

Certains noms de modules sont ambigus:

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 

réglage est-il l'option -hide-package la seule chose que je peux faire pour éviter l'ambiguïté?

Répondre

31

Pour autant que je sache, oui. Mais il ne doit pas être une grosse affaire, vous pouvez le faire à l'intérieur 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> 

Il y avait aussi une ligne article sur le journal des modifications GHC-7 qui m'a fait penser les importations de paquet travailleraient sur la commande ligne, mais il ne semble pas encore (voir ci-dessous). Le commentaire de changement dit quelque chose comme "la syntaxe d'importation complète prise en charge dans GHCi", qui doit exclure les extensions je 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 
+1

Et GHCi 7.0.1 semble accepter la ligne d'importation de paquet affichée échouant dans 7.0.0.20100924. –

15

réglage est-il l'option -hide-package la seule chose que je peux faire pour éviter l'ambiguïté?

Vous pouvez utiliser ghc-pkg, par ex.

$ ghc-pkg hide monads-fd 

C'est comme la mise en -hide-package sur chaque invocation ultérieure ghc. Paquets explicitement en fonction de monads-fd via Cabal ne seront pas affectés, mais tout le reste est. Fais attention!