Spec-Zone.ru › Haskell 9

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

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

© 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.12.1/docs/users_guide/exts/empty_data_deriving.html

Spec-Zone.ru

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