{R      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ.(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-InferredfRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~.(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-InferredfRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-(c) The University of Glasgow, CWI 2001--2004 BSD-style (see the LICENSE file)generics@haskell.org experimentalnon-portable (uses Data.Data)None*+ .(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification) None-(c) The University of Glasgow, CWI 2001--2004 BSD-style (see the LICENSE file)generics@haskell.org experimental-non-portable (local universal quantification) Safe-InferredHM*!The type constructor for builders The type constructor for readers The type constructor for queries(The type constructor for transformations(The type constructor for transformations&Other first-class polymorphic wrappers VWrapped generic functions; recall: [Generic c] would be legal but [Generic' c] not. }The general scheme underlying generic functions assumed by gfoldl; there are isomorphisms such as GenericT = Generic T. \Generic readers, say monadic builders, i.e., produce an "a" with the help of a monad "m".)Generic builders i.e., produce an "a".HGeneric monadic transformations, i.e., take an "a" and compute an "a"DGeneric queries of type "r", i.e., take any "a" and return an "r"?Generic transformations, i.e., take an "a" and return an "a"aMake a generic transformation; start from a type-specific case; preserve the term otherwiseXMake a generic query; start from a type-specific case; return a constant otherwisehMake a generic monadic transformation; start from a type-specific case; resort to return otherwisewMake a generic monadic transformation for MonadPlus; use "const mzero" (i.e., failure) instead of return as default.hMake a generic builder; start from a type-specific ase; resort to no build (i.e., mzero) otherwiseFlexible type extension7Extend a generic transformation by a type-specific case.Extend a generic query by a type-specific case?Extend a generic monadic transformation by a type-specific caseAExtend a generic MonadPlus transformation by a type-specific caseExtend a generic builderExtend a generic readerLeft-biased choice on maybes"Choice for monadic transformations Choice for monadic queries!>Recover from the failure of monadic transformation by identity"7Recover from the failure of monadic query by a constant#Flexible type extension$=Type extension of transformations for unary type constructors%?Type extension of monadic transformations for type constructors&/Type extension of queries for type constructors'/Type extension of readers for type constructors(0Type extension of builders for type constructorsFlexible type extension)=Type extension of transformations for unary type constructors*?Type extension of monadic transformations for type constructors+/Type extension of queries for type constructors,/Type extension of readers for type constructors-0Type extension of builders for type constructors>  !"#$%&'()*+,-.  !"#$%&'()*+,-. !" #$%&'()*+,-,   !"#$%&'()*+,--(c) The University of Glasgow, CWI 2001--2003 BSD-style (see the LICENSE file)generics@haskell.org experimental-non-portable (local universal quantification) Safe-InferredHM.5Apply a transformation everywhere in bottom-up manner/4Apply a transformation everywhere in top-down manner04Variation on everywhere with an extra stop condition1Monadic variation on everywhere21Apply a monadic transformation at least somewhere34Summarise all nodes in top-down, left-to-right order46Variation of "everything" with an added stop condition5Summarise all nodes in top-down, left-to-right order, carrying some state down the tree during the computation, but not left-to-right to siblings.60Get a list of all entities that meet a predicate72Look up a subterm by means of a maybe-typed filter8Bottom-up synthesis of a data structure; 1st argument z is the initial element for the synthesis; 2nd argument o is for reduction of results from subterms; 3rd argument f updates the synthesised data according to the given term9+Compute size of an arbitrary data structure:8Count the number of immediate subterms of the given term;!Determine depth of the given term<:Determine the number of all suitable nodes in a given term=1Determine the number of all nodes in a given term>=Determine the number of nodes of a given type in a given term?9Find (unambiguously) an immediate subterm of a given type./0123456789:;<=>?./0123456789:;<=>?./0123456789:;<=>?./0123456789:;<=>? .(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-Inferred./0123456789:;<=>?-(c) The University of Glasgow, CWI 2001--2003 BSD-style (see the LICENSE file)generics@haskell.org experimental(non-portable (uses Data.Generics.Basics) Safe-Inferred@/Generic show: an alternative to "deriving Show"A Generic showsB/Generic read: an alternative to "deriving Read"@AB@AB@AB@AB .(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-Inferred@AB-(c) The University of Glasgow, CWI 2001--2004 BSD-style (see the LICENSE file)generics@haskell.org experimental-non-portable (local universal quantification) Safe-InferredHM=The type constructor needed for the definition of gmapAccumQrFThe constant type constructor needed for the definition of gmapAccumQlEThe identity type constructor needed for the definition of gmapAccumT#A type constructor for accumulationCgfoldl with accumulationDgmapT with accumulationEApplicative versionFgmapM with accumulationGgmapQl with accumulationHgmapQr with accumulationIgmapQ with accumulationJTwin map for transformationK#Twin map for monadic transformationLTwin map for queriesM1Generic equality: an alternative to "deriving Eq"N@Generic zip controlled by a function with type-specific branchesO4Generic comparison: an alternative to "deriving Ord"CDEFGHIJKLMNO CDEFGHIJKLMNO CDFGHIEJKLMNOCDEFGHIJKLMNO .(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-Inferred CDEFGHIJKLMNO(c) 2008 Universiteit Utrecht  BSD-style generics@haskell.org  experimental  non-portable  Safe-Inferred3MPiConstruct the empty value for a datatype. For algebraic datatypes, the leftmost constructor is chosen. QxReturn a list of values of a datatype. Each value is one of the possible constructors of the datatype, populated with P values. PQPQPQPQ .(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-InferredPQ.(c) The University of Glasgow, CWI 2001--2004 !BSD-style (see the LICENSE file) generics@haskell.org  experimental .non-portable (local universal quantification)  Safe-Inferred.  !"#$%&'()*+,--(c) The University of Glasgow, CWI 2001--2004 BSD-style (see the LICENSE file)generics@haskell.org experimental(non-portable (uses Data.Generics.Basics)NoneRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ.(c) The University of Glasgow, CWI 2001--2004 0BSD-style (see the file libraries/base/LICENSE) generics@haskell.org  experimental .non-portable (local universal quantification) NoneRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdbefbcgbchbcibcjbckbclbcmbcnbcobcpbcqbcrbcsbctbcubcvbcwbcxbcybczbc{bc|bc}bc~bcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbbbbbbebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebebbbbsyb-0.5Data.Generics.AliasesData.Generics.SchemesData.Generics.TextData.Generics.TwinsData.Generics.BuildersData.Generics.BasicsGenerics.SYB.BasicsData.Generics.InstancesGenerics.SYB.InstancesGenerics.SYB.SchemesGenerics.SYB.TextGenerics.SYB.TwinsGenerics.SYB.BuildersGenerics.SYB.Aliases Data.Generics Generics.SYB GenericM'GMunGM GenericQ'GQunGQ GenericT'GTunGTGeneric' unGeneric'GenericGenericRGenericBGenericMGenericQGenericTmkTmkQmkMmkMpmkRext0extTextQextMextMpextBextRorElsechoiceMpchoiceQ recoverMprecoverQext1ext1Text1Mext1Qext1Rext1Bext2Text2Mext2Qext2Rext2B everywhere everywhere' everywhereBut everywhereM somewhere everything everythingButeverythingWithContextlistify something synthesizegsizeglengthgdepthgcount gnodecount gtypecount gfindtypegshowgshowsgread gfoldlAccum gmapAccumT gmapAccumA gmapAccumM gmapAccumQl gmapAccumQr gmapAccumQ gzipWithT gzipWithM gzipWithQgeqgzipgcompareemptyconstrsbase Data.DataDataData.Typeable.InternalTypeable tyconModule tyconUQname isNorepType mkNoRepType mkCharConstr mkRealConstrmkIntegralConstr mkCharType mkFloatType mkIntTypemaxConstrIndex constrIndex indexConstr isAlgType readConstr showConstr constrFixity constrFieldsdataTypeConstrsmkConstr mkDataType repConstr constrRep constrType dataTypeRep dataTypeName fromConstrM fromConstrB fromConstrgmapMogmapMpgmapMgmapQigmapQgmapQrgmapQlgmapT dataCast2 dataCast1 dataTypeOftoConstrgunfoldgfoldlDataTypeConstrAlgRepIntRepFloatRepCharRepNoRepDataRep AlgConstr IntConstr FloatConstr CharConstr ConstrRepConIndexPrefixInfixFixity Data.Typeablegcast2gcast1gcasteqTcast showsTypeReptypeOf7typeOf6typeOf5typeOf4typeOf3typeOf2typeOf1typeOftypeRep tyConString typeRepArgs typeRepTyConmkTyCon3mkAppTy funResultTy splitTyConAppmkFunTy mkTyConAppTypeRep tyConName tyConModule tyConPackageTyCon Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7Data.Type.EqualityRefl:~: Data.ProxyProxy myMkNoRepType $fData(->)$fDataIO $fDataIORef$fDataST $fDataSTM $fDataMVar $fDataTVar$fDataThreadId$fDataStablePtr $fDataHandle$fDataDataType $fDataTyCon $fDataTypeRepBRQMText2unBunRunQunMunTQrCONSTIDAunQrunCONSTunIDunA