J'essaie d'utiliser le ghc-mod
plugin vim pour faire la vérification de type / syntaxe, etc. Cependant, j'ai trouvé que cela ghc-mod
utilise toujours des chemins complets de types dans les messages d'erreur, par exemple:
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
...
ce qui encombre l'écran et il m'est très difficile de savoir où s'est passé. À titre de comparaison, voici 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
...
ce qui est beaucoup plus propre. Existe-t-il un moyen d' ghc-mod
utiliser des noms courts pour les types?
ghc
etghc-mod
utilisez-vous?Réponses:
Vous pouvez passer l'argument à ghc depuis ghc-mod comme:
Cela enverra l'argument
-dsuppress-module-prefixes
à ghc.la source
Vous pouvez essayer de passer
-dsuppress-module-prefixes
comme une option GHC. À un moment donné, cela m'a aidé à me débarrasser des qualificatifs de module dans les noms.la source