GHC-mod ต้องใช้ชื่อเต็มสำหรับประเภทหรือไม่


143

ฉันพยายามใช้ghc-modvim plugin เพื่อทำการพิมพ์ / ตรวจสอบไวยากรณ์ ฯลฯ อย่างไรก็ตามฉันพบว่า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

คำตอบ:


1

คุณสามารถส่งอาร์กิวเมนต์ไปยัง ghc จาก ghc-mod เป็น:

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

นี่จะส่งอาร์กิวเมนต์-dsuppress-module-prefixesไปยัง ghc


0

คุณสามารถลองผ่าน-dsuppress-module-prefixesเป็นตัวเลือก GHC เมื่อถึงจุดหนึ่งมันช่วยฉันให้กำจัดตัวระบุโมดูลในชื่อ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.