Ответ 1
Документация GHC служит примером, где достаточно предупреждения:
-fwarn-missing-methods
:Этот параметр включен по умолчанию и предупреждает вас, когда в объявлении экземпляра отсутствует один или несколько методов, и соответствующее объявление класса не имеет для них объявления по умолчанию.
Предупреждение подавляется, если имя метода начинается с подчеркивания. Вот пример, где это полезно:
class C a where _simpleFn :: a -> String complexFn :: a -> a -> String complexFn x y = ... _simpleFn ...
Идея состоит в том, что: (a) пользователи класса будут вызывать только
complexFn
; никогда_simpleFn
; и (b) объявления экземпляров могут определять либоcomplexFn
, либо_simpleFn
.Прагма
MINIMAL
может использоваться для изменения того, какая комбинация методов потребуется для экземпляров определенного класса. См. Раздел 7.20.5, "МИНИМАЛЬНАЯ прагма" .
То, что причина отсутствующих методов не приводит к ошибке, а предупреждение. Если вы хотите, чтобы предупреждения были фатальными, используйте -Werror
. Поскольку нет -ferr-missing-methods
, -Werror
- единственный способ сделать ошибку -fwarn-missing-methods
компилятором.