GHC-modは型にフルネームを使用する必要がありますか?


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
これは私が観察した行動ではありません。これはまだ起こっていますか?どちらのバージョンghcghc-mod、あなたが使用していますか?
dkasak

3
上記のような出力を生成する自己完結型の例(インポートが含まれています)がありますか?私は問題が何であるかを考えていると思いますが、出力からだけを伝えるのは少し難しいです...
アレック

回答:


1

次のように、ghc-modからghcに引数を渡すことができます。

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

これにより-dsuppress-module-prefixes、ghcに引数が送信されます。


0

-dsuppress-module-prefixesGHCオプションとして渡すことができます。ある時点で、名前からモジュール修飾子を取り除くのに役立ちました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.