deriving (Eq, Ord)
data Address = Address FuncType Text
pattern Address' :: Text -> Text -> Text -> Address
pattern Address' fnamespace fnTp fid = Address (FuncType fnamespace fnTp) fid
Поменял всюду где было (Address (FuncType nm fnTp) fid) на (Address’ nm fnTp fid) в паттерн матчинге функций и компилятор начал светить ворнинги в этих местах
Pattern match(es) are non-exhaustive
In an equation for ‘sendByteMsgDelay’:
Patterns not matched:
(Address _ _)
Те я смотрю на ошибку - это же часть которая матчиться паттерном, в чем может быть проблема?
компилятор заранее не знает, пересекается ли этот паттерн с чем-то ещё. надо явно расставлять прагму COMPLETE
компилятор умеет считать исчерпание только для ADT, но не для пользовательских образцов
https://downloads.haskell.org/ghc/latest/docs/html/users_guide/exts/pragmas.html#complete-pragma
спасибо, поставил прагму - ворнинги пропали
Обсуждают сегодня