Spec-Zone.ru › Haskell 9

6.6.1. Выведение экземпляров для пустых типов данных

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 (см. Вывод экземпляра любого другого класса)

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.14.1/docs/users_guide/exts/empty_data_deriving.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API