2015-09-20 1 views
143

Je suis en train d'utiliser le ghc-mod plugin vim pour faire le type/vérification de la syntaxe, etc. Cependant, je trouve que ghc-mod utilise toujours le chemin complet de types dans les messages d'erreur, par exemple:GHC-mod doit-il utiliser des noms complets pour les types?

test.hs|71 col 13 error| Couldn't match type ‘Data.Text.Internal.Text’                     
||    with ‘[GHC.Types.Char]’ 
|| Expected type: containers-0.5.6.2:Data.Map.Base.Map 
||     [GHC.Types.Char] 
||     ([(integer-gmp-1.0.0.0:GHC.Integer.Type.Integer, 
||      integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)], 
||     containers-0.5.6.2:Data.Set.Base.Set 
||      integer-gmp-1.0.0.0:GHC.Integer.Type.Integer) 
|| Actual type: containers-0.5.6.2:Data.Map.Base.Map 
||     Data.Text.Internal.Text 
||     ([(integer-gmp-1.0.0.0:GHC.Integer.Type.Integer, 
||      integer-gmp-1.0.0.0:GHC.Integer.Type.Integer)], 
||     containers-0.5.6.2:Data.Set.Base.Set 
||      integer-gmp-1.0.0.0:GHC.Integer.Type.Integer) 
|| In the second argument of ‘containers-0.5.6.2:Data.Map.Base.map’, namely 
|| ‘zippedMap’ 
|| In the second argument of ‘(GHC.Base.$)’, namely 
|| ‘containers-0.5.6.2:Data.Map.Base.map 
... 

qui encombre les écran et il est très difficile pour moi de savoir où s'est mal passé. A titre de comparaison, c'est le message d'erreur pour le même fichier en utilisant ghci:

test.hs:71:13: 
    Couldn't match type ‘T.Text’ with ‘[Char]’ 
    Expected type: M.Map [Char] ([(Integer, Integer)], S.Set Integer) 
     Actual type: M.Map T.Text ([(Integer, Integer)], S.Set Integer) 
    In the second argument of ‘M.map’, namely ‘zippedMap’ 
    In the second argument of ‘($)’, namely 
     ‘M.map 
... 

qui est beaucoup plus propre. Y at-il un moyen de faire ghc-mod utiliser des noms courts pour les types?

+3

Ce n'est pas le comportement observé pour moi. Cela arrive-t-il encore pour vous? Quelles versions de 'ghc' et' ghc-mod' utilisez-vous? – dkasak

+3

Avez-vous un exemple autonome (importations incluses) qui génère une sortie comme celle-ci? Je pense avoir une idée de ce que pourrait être le problème, mais c'est un peu difficile à dire seulement à partir de la sortie ... – Alec

Répondre

0

Vous pouvez essayer de passer le -dsuppress-module-prefixes en tant qu'option GHC. À un moment donné, cela m'a aidé à me débarrasser des qualificatifs de module dans les noms.

1

Vous pouvez passer l'argument de GHC GHC-mod comme:

$ ghc-mod lint *.hs -g -dsuppress-module-prefixes 

Cela envoie l'argument -dsuppress-module-prefixes à GHC.