Я использую расширение GHC -XDataKinds
и у меня включен -Wall
в библиотеке на Haskell, которую я пишу.Я получаю предупреждение об использовании не отмеченных отмеченных конструкторов, поскольку -Wall
подразумевает -Wunticked-promoted-constructors
.Мне интересно, почему это предупреждение важно;если мне разрешено писать в непримеченном стиле в синтаксисе по умолчанию, в чем вред?
Большая часть написанного мной кода с зависимой типизацией написана в Идрисе (и немного в Агде), и поэтому я 'm используется для единого пространства имен типов и значений.Как таковая, для меня естественно писать в неприписанном стиле.Однако, если в этом есть потенциальный вред, я добавлю галочки.Но я не хочу этого делать, не понимая почему.
Так, например, если у меня есть такой тип данных:
data HasDefault = IsDefaulted | NotDefaulted
, который используется в сигнатуре функции, подобной этой:
setDefault :: a -> T p NotDefaulted a -> T p IsDefaulted a
тогда я получаю предупреждение вот так (с также установленным -Werror
):
C:\path-to-my-lib\src\Lib.hs:103:46: error: [-Wunticked-promoted-constructors, -Werror=unticked-promoted-constructors]
Unticked promoted constructor: `IsDefaulted'.
Use 'IsDefaulted instead of `IsDefaulted'.
|
103 | setDefault :: a -> T p NotDefaulted a -> T p IsDefaulted a
| ^^^^^^^^^^^
Должен ли я беспокоиться об этом и быть уверенным в том, что тикаетподнял конструкторы?Или я должен выключить предупреждение?