generic-deriving-1.8.0: Generic programming library for generalised deriving.

Copyright(c) 2008--2009 Universiteit Utrecht
LicenseBSD3
Maintainergenerics@haskell.org
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell98

Generics.Deriving.TH

Description

This module contains Template Haskell code that can be used to automatically generate the boilerplate code for the generic deriving library. For now, it generates only the Generic instance. Empty datatypes are not yet supported.

Synopsis

Documentation

deriveMeta :: Name -> Q [Dec] Source

Given the type and the name (as string) for the type to derive, generate the Data instance, the Constructor instances, and the Selector instances.

deriveData :: Name -> Q [Dec] Source

Given a datatype name, derive a datatype and instance of class Datatype.

deriveConstructors :: Name -> Q [Dec] Source

Given a datatype name, derive datatypes and instances of class Constructor.

deriveSelectors :: Name -> Q [Dec] Source

Given a datatype name, derive datatypes and instances of class Selector.

deriveAll :: Name -> Q [Dec] Source

Given the type and the name (as string) for the type to derive, generate the Data instance, the Constructor instances, the Selector instances, and the Representable0 instance.

deriveRepresentable0 :: Name -> Q [Dec] Source

Given the type and the name (as string) for the Representable0 type synonym to derive, generate the Representable0 instance.

deriveRep0 :: Name -> Q [Dec] Source

Derive only the Rep0 type synonym. Not needed if deriveRepresentable0 is used.

simplInstance :: Name -> Name -> Name -> Name -> Q [Dec] Source

Given the names of a generic class, a type to instantiate, a function in the class and the default implementation, generates the code for a basic generic instance.