Apakah GHC-mod harus menggunakan nama lengkap untuk tipe?

143

Saya mencoba menggunakan ghc-modplugin vim untuk melakukan ketik / memeriksa sintaks dll. Namun, saya menemukan bahwa ghc-modselalu menggunakan path lengkap jenis dalam pesan kesalahan, misalnya:

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

yang mengacaukan layar dan sangat sulit bagi saya untuk mencari tahu di mana kesalahannya. Sebagai perbandingan, ini adalah pesan kesalahan untuk file yang sama menggunakan 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
...

yang jauh lebih bersih. Apakah ada cara untuk ghc-modmenggunakan nama pendek untuk jenis?

xzhu
sumber
3
Ini bukan perilaku yang diamati bagi saya. Apakah ini masih terjadi untuk Anda? Versi ghcdan apa ghc-modyang Anda gunakan?
dkasak
3
Apakah Anda memiliki contoh mandiri (termasuk impor) yang menghasilkan output seperti di atas? Saya pikir saya punya ide masalah apa yang mungkin terjadi, tetapi agak sulit untuk mengatakannya hanya dari output ...
Alec

Jawaban:

1

Anda dapat meneruskan argumen ke ghc dari ghc-mod sebagai:

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

Ini akan mengirim argumen -dsuppress-module-prefixeske ghc.

Kronos
sumber
0

Anda dapat mencoba meneruskan -dsuppress-module-prefixessebagai opsi GHC. Pada titik tertentu, itu memang membantu saya untuk menyingkirkan kualifikasi modul dalam nama.

sergv
sumber