-
EmptyDataDeriving -
- Начиная с:
-
8.4.1
- Статус:
-
Включено в
GHC2024,GHC2021,Haskell2010
Разрешает выводить экземпляры стандартных классов типов для пустых типов данных.
Типы данных без конструкторов можно записывать с помощью флага EmptyDataDecls (см. Типы данных без конструкторов), который по умолчанию включён в Haskell 2010. Однако по умолчанию не включена возможность выводить экземпляры классов типов для таких типов. Эта возможность включается с помощью флага EmptyDataDeriving. Например, благодаря ему можно написать:
data Empty deriving (Eq, Ord, Read, Show)
В результате будут созданы следующие экземпляры:
instance Eq Empty where
_ == _ = True
instance Ord Empty where
compare _ _ = EQ
instance Read Empty where
readPrec = pfail
instance Show Empty where
showsPrec _ x = case x of {}
Флаг EmptyDataDeriving требуется только для вывода экземпляров этих четырёх «стандартных» классов типов (упомянутых в отчёте Haskell). Для других расширений механизма deriving, подробнее описанных ниже, не требуется использовать EmptyDataDeriving вместе с пустыми типами данных. К ним относятся:
-
StandaloneDeriving(см. Отдельные объявления вывода экземпляров) - Классы типов, для вывода которых требуется включить собственные расширения, например
DeriveFunctor(см. Вывод экземпляров дополнительных классов (Data и т. д.)) -
DeriveAnyClass(см. Вывод экземпляра любого другого класса)