multirec-0.7.7: Generic programming for families of recursive datatypes

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

Generics.MultiRec.TH

Description

This module contains Template Haskell code that can be used to automatically generate the boilerplate code for the multirec library. The constructor information can be generated per datatype, the rest per family of datatypes.

Synopsis

Documentation

deriveAll :: Name -> Q [Dec] Source

Given the name of the family index GADT, derive everything.

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

Given a list of datatype names, derive datatypes and instances of class Constructor. Not needed if deriveAll is used.

deriveFamily :: Name -> [Name] -> String -> Q [Dec] Source

Deprecated: Use deriveAll instead.

Compatibility. Use deriveAll instead.

Given the name of the index GADT, the names of the types in the family, and the name (as string) for the pattern functor to derive, generate the Ix and PF instances. IMPORTANT: It is assumed that the constructors of the GADT have the same names as the datatypes in the family.

deriveSystem :: Name -> [Name] -> String -> Q [Dec] Source

Deprecated: Use deriveFamily instead

Compatibility. Use deriveAll instead.

derivePF :: String -> [Name] -> Q [Dec] Source

Derive only the PF instance. Not needed if deriveAll is used.

deriveEl :: Name -> [Name] -> [(Name, [Name])] -> Q [Dec] Source

Derive only the El instances. Not needed if deriveAll is used.

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

Derive only the Fam instance. Not needed if deriveAll is used.

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

Derive only the EqS instance. Not needed if deriveAll is used.