úÎ Y!Rvƒ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghi j k l m n o p q r s t u v w x y z { | } ~  € ‚  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 LSome functions need to have their types desugared in order to make programs = that use them typable. Desugaring consists in transforming `inline' type Q family applications into equality constraints. This is a strangeness in current F versions of GHC that hopefully will be fixed sometime in the future. 8Type family describing the pattern functor of a system. Unlifted version of $#. Unlifted version of '&. Represents constructors. 8Is used to indicate the type (within the system) that a $ particular constructor injects to. <Represents products (sequences of fields of a constructor). 0Represents sums (choices between constructors). !(Represents constructors without fields. #<Represents constant types that do not belong to the system. &=Represents recursive positions. The first argument indicates / which type (within the system) to recurse on. (Destructor for '&. )Destructor for '(:>:)'. *Destructor for . +  !"#$%&'()*!&'(#$%!" )* !     !""#$%$%&''()* non-portable experimentalgenerics@haskell.org+6Given a list of datatype names, derive datatypes and  instances of class . ,3Given the name of the index GADT, the names of the 7 types in the system, and the name (as string) for the ) pattern functor to derive, generate the   and   instances.  IMPORTANT&: It is assumed that the constructors 9 of the GADT have the same names as the datatypes in the  family. -Derive only the  instance. Not needed if ,  is used. .Derive only the   instances. Not needed if ,  is used. +,-.+,-.+,-. non-portable experimentalgenerics@haskell.org/01/01/001 non-portable experimentalgenerics@haskell.org4 The function 4 takes a functor f. All the recursive instances 2 in that functor are wrapped by an application of r. The argument to  4# takes a function that transformes r occurrences into r'  occurrences, for every ix". In order to associate the index ix  with the correct system s, the argument to hmap is additionally $ parameterized by a witness of type s ix. 5Monadic version of 4. 2345234523345 non-portable experimentalgenerics@haskell.org6789:6789:678789: non-portable experimentalgenerics@haskell.org;<=>?@ABCDEFGHIJKLMNOPQHGFEIJDCBAKL@?>=MN<;OPQ;<=>?@ABCDEFGHIJKLMNOPQ non-portable experimentalgenerics@haskell.orgRSTUVWXYZ[\]^_`abcdefgh_^]\`a[ZYXbcWVUTdeSRfghRSTUVWXYZ[\]^_`abcdefgh  non-portable experimentalgenerics@haskell.orgi<The class fold explains how to convert a convenient algebra  l : back into a function from functor to result, as required " by the standard fold function. kAThe algebras passed to the fold have to work for all index types C in the system. The additional witness argument is required only  to make GHC's typechecker happy. l<The type family we use to describe the convenient algebras. m;Variant of fold that takes an additional witness argument. nFold with convenient algebras. o?For constructing algebras that are made of nested pairs rather D than n-ary tuples, it is helpful to use this pairing combinator. ijklmnolkijmnoijjklmno  non-portable experimentalgenerics@haskell.orgp<The class fold explains how to convert a convenient algebra  s : back into a function from functor to result, as required " by the standard fold function. rAThe algebras passed to the fold have to work for all index types C in the system. The additional witness argument is required only  to make GHC's typechecker happy. s<The type family we use to describe the convenient algebras. t;Variant of fold that takes an additional witness argument. uFold with convenient algebras. v?For constructing algebras that are made of nested pairs rather D than n-ary tuples, it is helpful to use this pairing combinator. pqrstuvsrpqtuvpqqrstuv  non-portable experimentalgenerics@haskell.orgwNormal version. xMonadic version of w . yApplicative version of w . wxywxywxy  non-portable experimentalgenerics@haskell.orgz{|z{|z{{|  non-portable experimentalgenerics@haskell.org6A variant of the algebra that takes an extra argument  to fix the system s the algebra works on. }~€‚}~€‚}~~€‚ non-portable experimentalgenerics@haskell.orgL  !"#$%&'()*2345;<=>?@ABCDEFGHIJKLMNOPQwxyz{|ƒ !!"##$%%&'(()*+,,--.//0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYCDEFGHIJKLMNOPQRSTUVWXY Z [ O \ ] Q W Z [ O \ ] Q W ^ _ ` a b c d e f g h ij multirec-0.2Generics.MultiRec.ConstructorGenerics.MultiRec.BaseGenerics.MultiRec.THGenerics.MultiRec.ConNamesGenerics.MultiRec.HFunctorGenerics.MultiRec.HFixGenerics.MultiRec.FoldGenerics.MultiRec.FoldKGenerics.MultiRec.FoldAlgGenerics.MultiRec.FoldAlgKGenerics.MultiRec.ComposGenerics.MultiRec.EqGenerics.MultiRec.ShowGenerics.MultiRec AssociativityNotAssociativeRightAssociativeLeftAssociativeFixityInfixPrefix ConstructorconName conFixityIxfrom_to_fromtoindexStrPFK0unK0I0unI0C:>:Tag:*::+:RLUKunKIunIunTagunCderiveConstructors deriveSystemderivePFderiveIxConNames hconNamesconNamesHFunctorhmapAhmaphmapMHFixHInhouthfromhto:->AlgPart ParaAlgebraF ParaAlgebraF' ParaAlgebra ParaAlgebra' CoAlgebraF CoAlgebraF' CoAlgebra CoAlgebra'AlgebraF AlgebraF'AlgebraAlgebra'foldfoldMunfoldunfoldMparaparaM&tagconFoldalgAlgfold_composcomposMcomposAHEqheqeqHShow hShowsPrecAlghShowsPrecAlg_ showsPrecshowspaces