-
EmptyDataDeriving -
- Since:
-
8.4.1
- Status:
-
Включено в
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(см. Вывод любого другого класса)