Чи повинен 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-prefixesghc.


0

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.