GHC-мод должен использовать полные имена для типов?


143

Я пытаюсь использовать ghc-modплагин vim для проверки типа / синтаксиса и т. Д. Однако я обнаружил, что 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
У вас есть автономный пример (включая импорт), который генерирует выходные данные, как указано выше? Я думаю, у меня есть идея, в чем может быть проблема, но это немного трудно сказать только по выходным данным
Алек

Ответы:


1

Вы можете передать аргумент в ghc из ghc-mod как:

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

Это отправит аргумент -dsuppress-module-prefixesв ghc.


0

Вы можете попробовать передать -dsuppress-module-prefixesкак вариант GHC. В какой-то момент это помогло мне избавиться от квалификаторов модулей в именах.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.