我傾向於反覆在終端中對我的程序進行類型檢查,同時在我選擇的編輯器中修改它們以獲得實時反饋。我通常運行類似於:watch -d -n 1 "ghc -fno-code NoIncompletePM.hs"
。ghc在使用`no-code`標誌時不會報告非詳盡的模式匹配
不幸的是,我用來避免編譯我不在乎的代碼的no-code
標記似乎與warn-incomplete-patterns
不兼容。例如。有了這個程序:
{-# OPTIONS -Wall #-}
module NoIncompletePM where
argh :: Bool -> Bool
argh True = True
我從來沒有得到任何警告,argh
缺失的情況下,爲False
。通過刪除no-code
標誌標誌和添加force-recomp
(這樣警告顯示每一次,而不僅僅是第一次編譯),但我確切地想要避免編譯這個是可能的代碼...
我在手冊中找不到任何描述這些不兼容的東西,所以我猜測它可能是意外的行爲,或者我做錯了什麼。任何線索?
小問題:1)當您不修改代碼時,使用'watch'輪詢看起來不是最理想的。你可以編寫自己的工具,它只有在源碼改變時才運行ghc:在這種情況下,你可以保留舊的信息,從而不需要「強制重新編譯」。 2)Emacs Flymake完成你正在做的事情(我不知道它傳遞給ghc的標誌 - 它可能會生成代碼)。我很確定還有其他編輯以及相同的功能。 3)影響警告的'no-code'看起來確實是錯誤的,但我無法複製它。 – chi