úÎ 4.0ê>      !"#$%&'()*+,-./0123456789:;<= non-portable experimentalgenerics@haskell.orgHDatatype to represent the fixity of a constructor. An infix declaration + directly corresponds to an application of . 6Class for datatypes that represent data constructors. % For non-symbolic constructors, only  has to be defined. 8 The weird argument is supposed to be instantiated with C from  base, hence the complex kind.       non-portable experimentalgenerics@haskell.org The type class Regular. captures the structural representation of a 8 type and the corresponding embedding-projection pairs. ITo be able to use the generic functions, the user is required to provide ! an instance of this type class. The type family PF/ represents the pattern functor of a datatype. ITo be able to use the generic functions, the user is required to provide " an instance of this type family. !The well-known fixed-point type. 3Structure type to store the name of a constructor. ,Structure type for fields of a constructor. +Structure type for alternatives in a type. 'Structure type for empty constructors. %Structure type for recursive values. $Structure type for constant values.        non-portable experimentalgenerics@haskell.org 2The class fold explains how to convert an algebra  #) into a function from functor to result. $The LR class defines two functions, leftf and rightf, which should & produce different functorial values. 'The LRBase class defines two functions, leftb and rightb , which " should produce different values. *The GShow! class defines a show on values. ,The Zip3 class defines a monadic zip on functorial values. .The CrushR? class defines a right-associative crush on functorial values. 0The GMap) class defines a monadic functorial map. 2<Flatten a structure by collecting all the elements present. 3JFunctorial zip with a non-monadic function, resulting in a monadic value. 44Partial functorial zip with a non-monadic function. 5=Equality on values based on their structural representation. 7GProduces a value which should be different from the value returned by  right. 8GProduces a value which should be different from the value returned by  left. 9Fold with convenient algebras. :HFor constructing algebras it is helpful to use this pairing combinator. >? !"#$%&'()*+,-./0123456789:01./2,-345*+6'()$%&78#" !9: !!"#$%&%&'()()*++,--.//01123456789: non-portable experimentalgenerics@haskell.org;-Given a datatype name, derive datatypes and  instances of class . <0Given the type and the name (as string) for the ) pattern functor to derive, generate the    instance. =Derive only the   instance. Not needed if <  is used. ;<=;<=;<= non-portable experimentalgenerics@haskell.org@>?  !"#$%&'()*+,-./0123456789:;<=@      !"#$%&'()*+,-./0123456789:;<=>?@A?@BC regular-0.1Generics.Regular.ConstructorGenerics.Regular.BaseGenerics.Regular.FunctionsGenerics.Regular.THGenerics.Regular AssociativityNotAssociativeRightAssociativeLeftAssociativeFixityInfixPrefix ConstructorconName conFixityRegularfromtoPFFixInCunC:*::+:RLUIunIKunKFoldalgAlgebraAlgLRleftfrightfLRBaseleftbrightbGShowgshowfZipfzipMCrushRcrushrGMapfmapMflattenfzipfzip'geqgshowleftrightfold&deriveConstructors deriveRegularderivePFbaseGHC.BaseFunctorfmap