GHC-mod是否必须对类型使用全名?


143

我正在尝试使用ghc-modvim插件进行类型/语法检查等。但是,我发现ghc-mod错误消息中始终使用类型的完整路径,例如:

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

屏幕变得混乱,我很难找出哪里出了问题。相比之下,这是使用的相同文件的错误消息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
...

这更干净。有没有办法ghc-mod为这些类型使用简称?


3
这不是我观察到的行为。这还在为您发生吗?您正在使用ghc和的哪个版本ghc-mod
dkasak

3
您是否有一个自成一体的示例(包括进口商品),其生成的输出如上所述?我想我有一个问题可能是什么的想法,但是仅从输出中很难分辨出来……
Alec

Answers:


1

您可以通过ghc-mod将参数传递给ghc:

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

这会将参数发送-dsuppress-module-prefixes给ghc。


0

您可以尝试通过-dsuppress-module-prefixes作为GHC选项。在某些时候,它确实帮助我摆脱了名称中的模块限定符。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.