¿GHC-mod tiene que usar nombres completos para los tipos?

143

Estoy tratando de usar el ghc-modcomplemento vim para hacer una verificación de tipo / sintaxis, etc. Sin embargo, descubrí que ghc-modsiempre usa rutas completas de tipos en los mensajes de error, por ejemplo:

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 abarrota la pantalla y es muy difícil para mí averiguar dónde salió mal. Como comparación, este es el mensaje de error para el mismo archivo 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
...

Que es mucho más limpio. ¿Hay alguna manera de ghc-modusar nombres cortos para los tipos?

xzhu
fuente
3
Este no es el comportamiento observado para mí. ¿Esto sigue sucediendo para ti? ¿Qué versiones de ghcy ghc-modestás usando?
dkasak
3
¿Tiene un ejemplo autónomo (importaciones incluidas) que genera resultados como el anterior? Creo que tengo una idea de cuál podría ser el problema, pero es un poco difícil saberlo solo por el resultado ...
Alec

Respuestas:

1

Puede pasar el argumento a ghc desde ghc-mod como:

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

Esto enviará el argumento -dsuppress-module-prefixesa ghc.

Kronos
fuente
0

Puede intentar pasar -dsuppress-module-prefixescomo una opción de GHC. En algún momento, me ayudó a deshacerme de los calificadores de módulo en los nombres.

sergv
fuente