úÎn°bÓ       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~  € ‚ ƒ „ … † ‡ ˆ ‰ Š ‹ ŒŽ‘’“”•–—˜™š›œžŸ non-portable experimentalgenerics@haskell.org Safe-Infered non-portable experimentalgenerics@haskell.org Safe-InferedHDatatype 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 Safe-Infered /Semi-decidable equality for types of a family. CClass that contains the shallow conversion functions for a family. #Class for the members of a family. 8Type family describing the pattern functor of a family. Unlifted version of ). Unlifted version of ,. Represents constructors. %Represents composition with functors  of kind * -> *. $Is used to indicate the type 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 family. ,=Represents recursive positions. The first argument indicates  which type to recurse on. /Destructor for '(:>:)'. 0Destructor for . 1+For backwards-compatibility: a synonym for . (  !"#$%&'()*+,-./01 ¡¢2  !"#$%&'()*+,-./01%,-.)*+'($&%"# !/01   !"#$&%'()*+,-./01 ¡¢ non-portable experimentalgenerics@haskell.org Safe-Infered4 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 family phi, the argument to hmap is additionally $ parameterized by a witness of type phi ix. 5Monadic version of 4. 2345£¤¥¦§¨©ª23452345 2345£¤¥¦§¨©ª non-portable experimentalgenerics@haskell.org Safe-Infered6789:;<=>?@ABCDEFGHIJKL6789:;<=>?@ABCDEFGHIJKLCBA@DE?>=<FG;:98HI76JKL6789:;<=>?@ABCDEFGHIJKL non-portable experimentalgenerics@haskell.org Safe-InferedMNormal version. NMonadic version of M. OApplicative version of M. MNOMNOMNOMNO non-portable experimentalgenerics@haskell.org Safe-Infered«0For constant types, we make use of the standard  equality function. PQRST¬­®¯°±«²³´PQRSTRSPQT PQRST¬­®¯°±«²³´ non-portable experimentalgenerics@haskell.org Safe-InferedUVWXYUVWXYUVWXYUVWXY  non-portable experimentalgenerics@haskell.orgNoneZ<Given the name of the family index GADT, derive everything. [5Given a list of datatype names, derive datatypes and  instances of class  . Not needed if Z  is used. \Compatibility. Use Z instead. 3Given the name of the index GADT, the names of the 7 types in the family, and the name (as string) for the ) pattern functor to derive, generate the Ix and   instances.  IMPORTANT&: It is assumed that the constructors 9 of the GADT have the same names as the datatypes in the  family. ]Compatibility. Use Z instead. ^Derive only the  instance. Not needed if Z  is used. _Derive only the  instances. Not needed if Z  is used. `Derive only the  instance. Not needed if Z  is used. aDerive only the   instance. Not needed if Z  is used. Z[\]^_`aZ[\]^_`aZ[\]^_`aZ[\]^_`a  non-portable experimentalgenerics@haskell.org Safe-Infered bcdµ¶·¸¹º»¼bcdbcd bcdµ¶·¸¹º»¼  non-portable experimentalgenerics@haskell.org Safe-Inferedefghijklmnopqrstuvwxyz{efghijklmnopqrstuvwxyz{rqpostnmlkuvjihgwxfeyz{efghijklmnopqrstuvwxyz{  non-portable experimentalgenerics@haskell.org Safe-Infered~0The list in the result type allows us to get at 4 the fields of a constructor individually, which in 6 turn allows us to insert additional stuff in between  if record notation is used. ½0For constant types, we make use of the standard  show function. |}~€‚ƒ„¾¿ÀÁÂÃÄÅ½Æ |}~€‚ƒ„ ~|}€‚ƒ„|}~€‚ƒ„¾¿ÀÁÂÃÄÅ½Æ  non-portable experimentalgenerics@haskell.org Safe-Infered…<The class fold explains how to convert a convenient algebra  ‰: back into a function from functor to result, as required " by the standard fold function. ‡AThe algebras passed to the fold have to work for all index types C in the family. The additional witness argument is required only  to make GHC's typechecker happy. ‰<The type family we use to describe the convenient algebras. ŠFold with convenient algebras. ‹?For constructing algebras that are made of nested pairs rather D than n-ary tuples, it is helpful to use this pairing combinator. …†‡ˆ‰Š‹ÇÈÉÊËÌÍÎÏ…†‡ˆ‰Š‹‰ˆ‡…†Š‹…†‡ˆ‰Š‹ÇÈÉÊËÌÍÎÏ non-portable experimentalgenerics@haskell.org Safe-InferedŒ<The class fold explains how to convert a convenient algebra  : back into a function from functor to result, as required " by the standard fold function. ŽAThe algebras passed to the fold have to work for all index types C in the family. The additional witness argument is required only  to make GHC's typechecker happy. <The type family we use to describe the convenient algebras. Fold with convenient algebras. ‘?For constructing algebras that are made of nested pairs rather D than n-ary tuples, it is helpful to use this pairing combinator. ŒŽ‘ÐÑÒÓÔÕÖ×ŒŽ‘ŽŒ‘ ŒŽ‘ÐÑÒÓÔÕÖ× non-portable experimentalgenerics@haskell.org Safe-Infered’“”•–—˜™š›œžŸØÙÚÛÜÝÞßàáâãäåæçè’“”•–—˜™š›œžŸ–—”•’“˜™š›œžŸ’“”•–—˜™š›œžŸØÙÚÛÜÝÞßàáâãäåæçè non-portable experimentalgenerics@haskell.org Safe-Inferedc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXY|}~€‚ƒ„é !"#$%&&'(()**+,-./00123445567789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc d e f g h i j k l m n @ A B C D E F G H I J K L M N O P Q R S T U V o p q r s t u v w x y L z { N TxyL{NT|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œž Ÿ   ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹±²³´µ·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËmultirec-0.7.2Generics.MultiRec.TEqGenerics.MultiRec.ConstructorGenerics.MultiRec.BaseGenerics.MultiRec.HFunctorGenerics.MultiRec.FoldGenerics.MultiRec.ComposGenerics.MultiRec.EqGenerics.MultiRec.HFixGenerics.MultiRec.THGenerics.MultiRec.ConNamesGenerics.MultiRec.FoldKGenerics.MultiRec.ShowGenerics.MultiRec.FoldAlgGenerics.MultiRec.FoldAlgKGenerics.MultiRec.ReadGenerics.MultiRec:=:Reflcast AssociativityNotAssociativeRightAssociativeLeftAssociativeFixityInfixPrefix ConstructorconName conFixityEqSeqSFamfromtoElproofPFK0unK0I0unI0C:.:DunD:>:Tag:*::+:RLUKunKIunIunTagunCindexHFunctorhmapAhmaphmapM:->AlgPart ParaAlgebraF ParaAlgebraF' ParaAlgebra ParaAlgebra' CoAlgebraF CoAlgebraF' CoAlgebra CoAlgebra'AlgebraF AlgebraF'AlgebraAlgebra'foldfoldMunfoldunfoldMparaparaM&tagconcomposcomposMcomposAEq1eq1HEqheqeqHFixHInhouthfromhto deriveAllderiveConstructors deriveFamily deriveSystemderivePFderiveEl deriveFam deriveEqSConNames hconNamesconNamesShow1show1HShow hShowsPrecAlg showsPrecshowspacescommas intersperseFoldalgCompAlgRead1read1 HReadPrechreader CountAtoms countatomsreadConsreadPrefixCons readInfixConsreadNoArgsConsappPrecreadPrec readsPrecread $fFunctorK0$fApplicativeI0 $fFunctorI0$fHFunctorphiC$fHFunctorphi:.:$fHFunctorphi:>:$fHFunctorphi:*:$fHFunctorphi:+:$fHFunctorphiU$fHFunctorphiK$fHFunctorphiI $fHEqphiK $fHEqphiC $fHEqphi:>: $fHEqphi:.: $fHEqphi:*: $fHEqphi:+: $fHEqphiU $fHEqphiI $fEq1Maybe$fEq1[] $fConNames:>: $fConNamesI $fConNames:.: $fConNames:*: $fConNamesU $fConNamesK $fConNames:+: $fConNamesC $fHShowphiK $fShow1[] $fShow1Maybe $fHShowphiC $fHShowphi:.: $fHShowphi:>: $fHShowphi:*: $fHShowphi:+: $fHShowphiU $fHShowphiI$fFoldC $fFold:>: $fFold:*: $fFold:*:0 $fFold:+: $fFold:.:$fFoldI$fFoldU$fFoldK$fHReadPrecphiC$fHReadPrecphiC0$fHReadPrecphiC1$fHReadPrecphiC2$fHReadPrecphiC3 $fRead1Maybe $fRead1[]$fHReadPrecphi:.:$fHReadPrecphi:>:$fHReadPrecphi:*:$fHReadPrecphi:+:$fHReadPrecphiI$fHReadPrecphiK$fHReadPrecphiU$fCountAtoms:*: $fCountAtomsI $fCountAtomsK