GHC-mod deve usare nomi completi per i tipi?


143

Sto cercando di utilizzare il ghc-modplug-in vim per eseguire il controllo di tipo / sintassi ecc. Tuttavia, ho scoperto che ghc-modutilizza sempre percorsi completi di tipi nei messaggi di errore, ad esempio:

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

che ingombra lo schermo ed è molto difficile per me scoprire dove è andato storto. A titolo di confronto, questo è il messaggio di errore per lo stesso file usando 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
...

che è molto più pulito. C'è un modo per ghc-modusare nomi brevi per i tipi?


3
Questo non è il comportamento osservato per me. Ti sta ancora succedendo? Quali versioni di ghce ghc-modstai usando?
dkasak,

3
Hai un esempio autonomo (importazioni incluse) che genera output come sopra? Penso di avere un'idea di quale potrebbe essere il problema, ma è un po 'difficile dire solo dall'output ...
Alec,

Risposte:


1

Puoi passare l'argomento a ghc da ghc-mod come:

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

Questo invierà l'argomento -dsuppress-module-prefixesa ghc.


0

Puoi provare a passare -dsuppress-module-prefixescome opzione GHC. Ad un certo punto, mi ha aiutato a sbarazzarmi dei qualificatori dei moduli nei nomi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.