O GHC-mod precisa usar nomes completos para tipos?


143

Estou tentando usar o ghc-modplug-in vim para fazer a verificação de tipo / sintaxe etc. No entanto, descobri que ghc-modsempre usa caminhos completos de tipos nas mensagens de erro, por exemplo:

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

que atravessa a tela e é muito difícil descobrir onde deu errado. Como comparação, esta é a mensagem de erro para o mesmo arquivo 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
...

o que é muito mais limpo. Existe uma maneira de ghc-modusar nomes abreviados para os tipos?


3
Este não é o comportamento observado para mim. Isso ainda está acontecendo para você? Quais versões ghce ghc-modvocê está usando?
Dkasak

3
Você tem um exemplo independente (importações incluídas) que gera saída como a acima? Eu acho que tenho uma idéia do que pode ser o problema, mas é um pouco difícil dizer apenas a partir da saída ...
Alec

Respostas:


1

Você pode passar o argumento para ghc a partir de ghc-mod como:

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

Isso enviará o argumento -dsuppress-module-prefixespara ghc.


0

Você pode tentar passar -dsuppress-module-prefixescomo uma opção do GHC. Em algum momento, isso me ajudou a me livrar dos qualificadores de módulo nos nomes.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.