2015-09-20 8 views
143

Ich versuche, das ghc-mod vim Plugin zu verwenden, Typ/Syntaxprüfung etc. Allerdings zu tun, fand ich, dass ghc-mod immer voller Pfade von Typen in den Fehlermeldungen, zum Beispiel verwendet:Muss GHC-mod volle Namen für Typen verwenden?

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 
... 

welche clutters die Bildschirm und es ist sehr schwer für mich herauszufinden, wo schief gelaufen ist. Als Vergleich ist dies die Fehlermeldung für die gleiche Datei mit 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 
... 

, die viel sauberer ist. Gibt es eine Möglichkeit, ghc-mod kurze Namen für die Typen zu verwenden?

+3

Dies ist nicht das beobachtete Verhalten für mich. Ist das immer noch für dich passiert? Welche Versionen von 'ghc' und' ghc-mod' verwenden Sie? – dkasak

+3

Haben Sie ein eigenständiges Beispiel (einschließlich Importe), das eine Ausgabe wie oben generiert? Ich denke, ich habe eine Idee, was das Problem sein könnte, aber es ist ein bisschen schwer, nur von der Ausgabe zu erzählen ... – Alec

Antwort

0

Sie können versuchen, -dsuppress-module-prefixes als GHC-Option zu übergeben. Irgendwann hat es mir geholfen, Modul-Qualifier in Namen loszuwerden.

1

Sie können das Argument ghc von GHC-mod passieren, wie:

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

Diese -dsuppress-module-prefixes zu ghc das Argument senden.