*犟      !"#$%&'()*+,-./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 { | } ~  Safe  #(c) 2008--2009 Universiteit UtrechtBSD3generics@haskell.org experimental non-portableNone*Indicates whether Generic(1) is being derived for a plain data type (DataPlain) or a data family instance (DataFamily). DataFamily bundles the Name of the data family instance's first constructor (for Name-generation purposes) and the types used to instantiate the instance.Like  GenericArity!, but bundling two things in the  case: The  of the last type parameter.XIf that last type parameter had kind k (where k is some kind variable), then it has  the kind variable . Otherwise, it has .7Indicates whether Generic or Generic1 is being derived.EWhether a type is not of kind *, is of kind *, or is a kind variable.BExpands all type synonyms in a type. Written by Dan Rosn in the  genifunctors package (licensed under BSD3).8Does a Type have kind * or k (for some kind variable k)?Returns  the kind variable  of a # if it exists. Otherwise, returns .jConcat together all of the StarKindStatuses that are IsKindVar and extract the kind variables' Names out."Returns True if a Type has kind *.GGets all of the type/kind variable names mentioned somewhere in a Type.BGets all of the kind variable names mentioned somewhere in a Kind.XGets all of the specified type/kind variable names mentioned in a Type. In contrast to ,  does not go into kinds of s.PIs the given type a type family constructor (and not a data family constructor)?*True if the type does not mention the Name)Construct a type via curried application.7Apply a type constructor name to type variable binders.HSplit an applied type into its individual components. For example, this: Either Int Char would split to this: [Either, Int, Char] ESplit a type signature by the arrows on its spine. For example, this: #forall a b. (a -> b) -> Char -> () would split to this: ([a, b], [a -> b, Char, ()]) )Like uncurryType, except on a kind level.KIf a VarT is missing an explicit kind signature, steal it from a TyVarBndr.KGenerate a list of fresh names with a common prefix, and numbered suffixes.Checks to see if the last types in a data family instance can be safely eta- reduced (i.e., dropped), given the other types. This checks for three conditions: +All of the dropped types are type variables%All of the dropped types are distinct<None of the remaining types mention any of the dropped typesdExtract the Name from a type variable. If the argument Type is not a type variable, throw an error.Is the given type a variable?Is the given kind a variable?Returns  is a  contains no type variables.Returns  is a  contains no kind variables.6Peel off a kind signature from a Type (if it has one).;Peel off a kind signature from a TyVarBndr (if it has one).9Does the given type mention any of the Names in the list?AAre all of the items in a list (which have an ordering) distinct?HThis uses Set (as opposed to nub) for better asymptotic time complexity.AVariant of foldr1 which returns a special element for empty lists#Extracts the name of a constructor.;Extracts the constructors of a data or newtype declaration.*Credit to Vctor Lpez Juan for this trick}One of the last type variables cannot be eta-reduced (see the canEtaReduce function for the criteria it would have to meet).Either the given data type doesn't have enough type variables, or one of the type variables to be eta-reduced cannot realize kind *.HDeriving Generic(1) doesn't work with ExistentialQuantification or GADTs>Cannot have a constructor argument of form (forall a1 ... an.  type) when deriving Generic(1)Cannot have a Generic(1) instance where the instance head's type is instantiated to be a more "saturated" type than the original data declaration. That means something like this would be rejected: {- LANGUAGE TypeInType (-} data Hm k (a :: k) deriving Generic1 Since having a Generic1 instance would force k to be instantiated with *, resulting in an instance Generic1 (Hm *) instead of instance Generic1 (Hm k)."Boilerplate for top level splices.-The given Name must meet one of two criteria: JIt must be the name of a type constructor of a plain data type or newtype.NIt must be the name of a data family instance or newtype instance constructor.,Any other value will result in an exception.One cannot derive Generic(1) instance for anything that uses DatatypeContexts, so check to make sure the Cxt field of a datatype is null.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWX#(c) 2008--2009 Universiteit UtrechtBSD3generics@haskell.org experimental non-portableNoneNGiven the type and the name (as string) for the type to derive, generate the Data instance, the  Constructor instances, and the Selector instances.?Given a datatype name, derive a datatype and instance of class Datatype.@Given a datatype name, derive datatypes and instances of class  Constructor.?Given a datatype name, derive datatypes and instances of class Selector.YZ[\]^_`abcdefghij YghijYZ[\]^_`abcdefghij#(c) 2008--2009 Universiteit UtrechtBSD3generics@haskell.org experimental non-portableNoneGiven the names of a generic class, a type to instantiate, a function in the class and the default implementation, generates the code for a basic generic instance.#A backwards-compatible synonym for .NGiven the type and the name (as string) for the type to derive, generate the Data instance, the  Constructor instances, the Selector instances, and the Representable0 instance.Like 0, except that the type variable binders in the Rep1 type synonym will have explicit kind signatures.NGiven the type and the name (as string) for the type to derive, generate the Data instance, the  Constructor instances, the Selector instances, and the Representable1 instance. Like 0, except that the type variable binders in the Rep11 type synonym will have explicit kind signatures. NGiven the type and the name (as string) for the type to derive, generate the Data instance, the  Constructor instances, the Selector instances, the Representable0 instance, and the Representable1 instance. Like  0, except that the type variable binders in the Rep and Rep12 type synonyms will have explicit kind signatures. eGiven the type and the name (as string) for the Representable0 type synonym to derive, generate the Representable0 instance. Like  0, except that the type variable binders in the Rep1 type synonym will have explicit kind signatures.eGiven the type and the name (as string) for the Representable1 type synonym to derive, generate the Representable1 instance.Like 0, except that the type variable binders in the Rep11 type synonym will have explicit kind signatures.Derive only the Rep0 type synonym. Not needed if   is used.Like /, except that the type variable binders in the Rep2 type synonym will have explicit kind signatures.Derive only the Rep1 type synonym. Not needed if  is used.Like /, except that the type variable binders in the Rep12 type synonym will have explicit kind signatures.Generates the Rep) type synonym constructor (as opposed to , which generates the type synonym declaration). After splicing it into Haskell source, it expects types as arguments. For example: type Rep (Foo a b) = $( ''Foo) a b Generates the Rep1) type synonym constructor (as opposed to , which generates the type synonym declaration). After splicing it into Haskell source, it expects types as arguments. For example: type Rep1 (Foo a b) = $( ''Foo) a b Generates the Rep) type synonym constructor (as opposed to X, which generates the type synonym declaration) applied to its type arguments. Unlike , this also takes a quoted  as an argument, e.g., type Rep (Foo a b) = $( ''Foo [t| Foo a b |]) Generates the Rep1) type synonym constructor (as opposed to X, which generates the type synonym declaration) applied to its type arguments. Unlike , this also takes a quoted  as an argument, e.g., type Rep1 (Foo a b) = $( ''Foo [t| Foo a b |]) #A backwards-compatible synonym for .1Generates a lambda expression which behaves like from.#A backwards-compatible synonym for .1Generates a lambda expression which behaves like to.1Generates a lambda expression which behaves like from1.1Generates a lambda expression which behaves like to1.k;Deduces the instance type to use for a Generic(1) instance.A l mnopqrstuvwxyz{|}~kGeneric or Generic1(The type constructor or data family name=The type variables from the data type/data family declarationUIf using a data family instance, provides the types used to instantiate the instanceGeneric or Generic1(The type constructor or data family name*The types to instantiate the instance with+True if it's a data family, False otherwise   A l mnopqrstuvwxyz{|}~k Trustworthy*+-./357<=>KL Type synonym for $: Type synonym for $:  Type synonym for $: !Type synonym for $: "Type synonym for $: #Type synonym for $: $Constants of kind # Used for marking occurrences of  Used for marking occurrences of  Used for marking occurrences of  Used for marking occurrences of  Used for marking occurrences of  Used for marking occurrences of + !"#$R !"#$ !"#$ Trustworthy '357=>KL%&'()*+,-  ./   0123456789: !";#$<%&'=()*+>,-.?/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}%&'()*+,-./0123456789:;<=>??>=<;:9876543210/.-,+*)('&%%&'()*+,-  ./   0123456789: !";#$<%&'=()*+>,-.?/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}SafeR !"#$$#"! Safe '1345>KL@A~B@AB@AB@A~B(c) 2012 University of OxfordBSD3generics@haskell.org experimental non-portableSafe '345>KLNFFReturn the name of all the constructors of the type of the given term.G4Return the name of the constructor of the given termCDEFGCDEFGCDEFGCDEFG Trustworthy '1345<>KLHIJ     HIJHIJHIJ      Trustworthy '1345>KLL>The list of values in the subrange defined by a bounding pair.M,The position of a subscript in the subrange.NReturns B the given subscript lies in the range defined the bounding pair.wInterleave elements from two lists. Similar to (++), but swap left and right arguments on every recursive application. From Mark Jones' talk at AFP2008{Diagonalization of nested lists. Ensure that some elements from every sublist will be included. Handles infinite sublists. From Mark Jones' talk at AFP2008KLMNOPQRSTUV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ KLMNOPQRSTUV OPQRSKLMNTUVKLMNOPQRSTUV !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe '1345>KL$WXYWXYWXY"WXY  Trustworthy 1345<KLN~Z[\]^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abZ[\]^Z[\]^uZ[\]^      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab 42011-2012 Universiteit Utrecht, University of OxfordBSD3generics@haskell.org experimental non-portable Trustworthy '13457>KL8_`abcdecdefghijfghijklmnopqrklmnopqrstuvwxyz{|}~_`abcdefghijklmnopqr_`abcdelmnopqrfghijk,_`abcdecdefghijfghijklmnopqrklmnopqrstuvwxyz{|}~ Safe '1345>KL8stuvwxyz{|}~stuvwxyz{|}~stuvwxyz{|}~/stuvwxyz{|}~ Safe'14>KLGeneric Generic Generic .(' Safe'14>KL$  !  Safe '1345>KL$    !"#$%&'(    !"#$%&'(Safe !"#$@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqr) !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklm n o p q r s t u v w x y z { | } ~           !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~234567      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ 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 [ \ ] ^ _ ` 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 { | } ~                                                                                                                         !"#$%&'()*+,-gener_Kntum72tEb7AY6gSLNQ3e5Generics.Deriving.THGenerics.Deriving.BaseGenerics.Deriving.InstancesGenerics.Deriving.CopointGenerics.Deriving.ConNamesGenerics.Deriving.EqGenerics.Deriving.EnumGenerics.Deriving.FunctorGenerics.Deriving.ShowGenerics.Deriving.UniplateGenerics.Deriving.FoldableGenerics.Deriving.MonoidGenerics.Deriving.SemigroupGenerics.Deriving.TraversablePaths_generic_derivingGenerics.Deriving.TH.InternalGenerics.Deriving.TH.Pre711Generics.Deriving.Base.InternalGenerics.Deriving deriveMeta deriveDataderiveConstructorsderiveSelectors simplInstance deriveAll deriveAll0deriveAll0WithKindSigs deriveAll1deriveAll1WithKindSigsderiveAll0And1deriveAll0And1WithKindSigsderiveRepresentable0 deriveRepresentable0WithKindSigsderiveRepresentable1 deriveRepresentable1WithKindSigs deriveRep0deriveRep0WithKindSigs deriveRep1deriveRep1WithKindSigsmakeRep0makeRep1makeRep0FromTypemakeRep1FromTypemakeFrom makeFrom0makeTomakeTo0 makeFrom1makeTo1UWordUIntUFloatUDoubleUCharUAddrURec Rep1Proxy Rep1Complex Rep0Complex Rep1UWord Rep0UWordRep1UIntRep0UInt Rep1UFloat Rep0UFloat Rep1UDouble Rep0UDouble Rep1UChar Rep0UChar Rep1UAddr Rep0UAddrRep1V1Rep0V1Rep1U1Rep1Rec1Rep1Par1Rep1M1Rep1K1Rep1ConComposeRep1ConProduct Rep1ConSum Rep0Version Rep0ExitCodeGCopointgcopointgcopointdefaultConNames gconNames gconNameOfconNames conNameOfGEqgeq geqdefaultGIxrangeindexinRangeGEnumgenum genumDefault toEnumDefaultfromEnumDefault rangeDefault indexDefaultinRangeDefaultGFunctorgmap gmapdefaultGShow gshowsPrecgshowsgshowgshowsPrecdefaultUniplatechildrencontextdescenddescendM transform transformMchildrendefaultcontextdefaultdescenddefaultdescendMdefaulttransformdefaulttransformMdefaultuniplateuniverserewriterewriteMcontextsholespara GFoldablegfoldMapgfoldgfoldrgfoldr'gfoldlgfoldl'gfoldr1gfoldl1gfoldMapdefaultgtoListgconcat gconcatMapgandgorganygallgsumgproductgmaximum gmaximumBygminimum gminimumBygelemgnotElemgfindGMonoidgmemptygmappendgmconcatgmemptydefaultgmappenddefault memptydefaultmappenddefault GSemigroupgsappendgstimesgsappenddefault GTraversable gtraverse gsequenceAgmapM gsequencegtraversedefaultcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName DataVariety GenericKindGen1template-haskellLanguage.Haskell.TH.SyntaxNamebaseGHC.BaseJustNothing GenericClassStarKindStatus expandSyncanRealizeKindStarstarKindStatusToNamecatKindVarNames hasKindStartyVarNamesOfTypekindVarNamesOfKindvisibleTyVarsOfTypeSigT isTyFamilyground applyTyToTys applyTyToTvbs unapplyTy uncurryTy uncurryKindstealKindForType newNameList canEtaReduce varTToNameisTyVar isKindVarisTypeMonomorphicghc-prim GHC.TypesTrueTypeisKindMonomorphicKindunSigT unKindedTV mentionsName allDistinctfoldr1'constructorName dataDecCons sanitizeNameetaReductionErrorderivingKindError gadtError rankNErrorinstantiationError reifyDataInfocheckDataContext DataPlain DataFamilyGen0GenericGeneric1 NotKindStarKindStar IsKindVar KindSubst TypeSubst expandSynKind expandSynAppmkSubst substType substKindsubstNameWithKindsubstNamesWithKindStarsubstTyVarBndrKind substNameWithKindStarInTyVarBndrtyVarNamesOfTyVarBndrtyVarBndrToType tyVarBndrName tyVarBndrKindfst3snd3trd3shrink reifyConTysshowsDataVariety showNameQualoutOfPlaceTyVarError gdPackageKey mkGD7'1_d mkGD7'11_d mkGD7'1_tc mkGD7'11_tc mkGD7'1_v mkGD7'11_v mkBaseName_dmkGHCPrimName_dmkGHCPrimName_tc comp1DataName infixDataName k1DataName l1DataNameleftAssociativeDataName m1DataNamenotAssociativeDataName par1DataNameprefixDataNameproductDataName r1DataName rec1DataNamerightAssociativeDataName u1DataName uAddrDataName uCharDataNameuDoubleDataNameuFloatDataName uIntDataName uWordDataName c1TypeNamecomposeTypeNameconstructorTypeName d1TypeNamegenericTypeNamegeneric1TypeNamedatatypeTypeNamenoSelectorTypeName par1TypeNameproductTypeName rec0TypeName rec1TypeName repTypeName rep1TypeName s1TypeNameselectorTypeName sumTypeName u1TypeName uAddrTypeName uCharTypeNameuDoubleTypeNameuFloatTypeName uIntTypeName uWordTypeName v1TypeNameconFixityValNameconIsRecordValNameconNameValNamedatatypeNameValNameisNewtypeValName fromValName from1ValNamemoduleNameValNameselNameValName toValName to1ValNameuAddrHashValNameuCharHashValNameuDoubleHashValNameuFloatHashValNameuIntHashValNameuWordHashValNameunComp1ValName unK1ValName unPar1ValName unRec1ValName trueDataName falseDataNamenothingDataName justDataName mkGHCPrim_tcaddrHashTypeNamecharHashTypeNamedoubleHashTypeNamefloatHashTypeNameintHashTypeNamewordHashTypeNamecomposeValName errorValName fmapValNameundefinedValName starKindName SelStrictInfo dataInstanceconstrInstanceselectInstance mkDataData mkConstrData mkSelectDatamkDataInstance liftFixityliftAssociativitymkConstrInstancemkConstrInstanceWithmkSelectInstancegenNamemkMetaDataTypemkMetaConsType mkMetaSelTypereifySelStrictInfobuildTypeInstancederiveAllCommonderiveRepresentableCommonderiveRepCommon deriveInstderiveInstCommon makeRepCommonmakeRepTySynApp makeFunCommon genRepNamerepTyperepCon repConWithprodTrepField repFieldArgboxT mkCaseExpmkFrom errorFromerrorTomkTofromConprodE fromField fromFieldWrapwC boxRepNametoCon toConUnwCtoField toFieldWrapunwC unboxRepNamelrPlrEunboxedRepNamesbuildTypeInstanceFromTysgrabTyVarBndrsFromConsGHC.PrimWord#Int#Float#Double#Char#Addr#TFCo:R:URecWordpTFCo:R:URecIntpTFCo:R:URecFloatpTFCo:R:URecDoublepTFCo:R:URecCharpTFCo:R:URecPtrpuWord#uInt#uFloat#uDouble#uChar#uAddr#$fTraversableURec$fFoldableURec $fFunctorURec$fTraversableURec0$fFoldableURec0$fFunctorURec0$fTraversableURec1$fFoldableURec1$fFunctorURec1$fTraversableURec2$fFoldableURec2$fFunctorURec2$fTraversableURec3$fFoldableURec3$fFunctorURec3$fTraversableURec4$fFoldableURec4$fFunctorURec4 GHC.GenericsDatatype ConstructorSelectorV1U1Par1Rec1K1M1:+::*::.:RPDCSRec0Par0D1C1S1 NoSelectorRepRep1precunPar1unRec1unK1unM1R1L1unComp1Comp1 isNewtype moduleName datatypeNameselName conIsRecord conFixityconNameArityNoArityInfixPrefixFixityNotAssociativeRightAssociativeLeftAssociative Associativitytofromto1from1 C1_0ProxyD1Proxy C1_0Complex D1Complex S1_0_0UWord C1_0UWordD1UWord S1_0_0UIntC1_0UIntD1UInt S1_0_0UFloat C1_0UFloatD1UFloat S1_0_0UDouble C1_0UDouble D1UDouble S1_0_0UChar C1_0UCharD1UChar S1_0_0UAddr C1_0UAddrD1UAddrD1V1C1_0U1D1U1 S1_0_0Rec1C1_0Rec1D1Rec1 S1_0_0Par1C1_0Par1D1Par1S1_0_0M1C1_0M1D1M1S1_0_0K1C1_0K1D1K1S1_0_0ConComposeC1_0ConCompose D1ConCompose C1_ConProduct D1ConProduct C1_1ConSum C1_0ConSumD1ConSum S1_0_1Version S1_0_0Version C1_0Version D1Version C1_1ExitCode C1_0ExitCode D1ExitCode$fConstructorC1_0Proxy$fDatatypeD1Proxy$fGeneric1Proxy$fConstructorC1_0Complex$fDatatypeD1Complex$fGeneric1Complex$fGenericComplex$fSelectorS1_0_0UWord$fConstructorC1_0UWord$fDatatypeD1UWord$fGeneric1URec $fGenericURec$fSelectorS1_0_0UInt$fConstructorC1_0UInt$fDatatypeD1UInt$fGeneric1URec0$fGenericURec0$fSelectorS1_0_0UFloat$fConstructorC1_0UFloat$fDatatypeD1UFloat$fGeneric1URec1$fGenericURec1$fSelectorS1_0_0UDouble$fConstructorC1_0UDouble$fDatatypeD1UDouble$fGeneric1URec2$fGenericURec2$fSelectorS1_0_0UChar$fConstructorC1_0UChar$fDatatypeD1UChar$fGeneric1URec3$fGenericURec3$fSelectorS1_0_0UAddr$fConstructorC1_0UAddr$fDatatypeD1UAddr$fGeneric1URec4$fGenericURec4$fDatatypeD1V1 $fGeneric1V1 $fGenericV1$fConstructorC1_0U1$fDatatypeD1U1 $fGeneric1U1$fSelectorS1_0_0Rec1$fConstructorC1_0Rec1$fDatatypeD1Rec1$fGeneric1Rec1$fSelectorS1_0_0Par1$fConstructorC1_0Par1$fDatatypeD1Par1$fGeneric1Par1$fSelectorS1_0_0M1$fConstructorC1_0M1$fDatatypeD1M1 $fGeneric1M1$fSelectorS1_0_0K1$fConstructorC1_0K1$fDatatypeD1K1 $fGeneric1K1$fSelectorS1_0_0ConCompose$fConstructorC1_0ConCompose$fDatatypeD1ConCompose $fGeneric1:.:$fConstructorC1_ConProduct$fDatatypeD1ConProduct $fGeneric1:*:$fConstructorC1_1ConSum$fConstructorC1_0ConSum$fDatatypeD1ConSum $fGeneric1:+:$fSelectorS1_0_1Version$fSelectorS1_0_0Version$fConstructorC1_0Version$fDatatypeD1Version$fGenericVersion$fConstructorC1_1ExitCode$fConstructorC1_0ExitCode$fDatatypeD1ExitCode$fGenericExitCode GCopoint' gcopoint'$fGCopointWrappedMonad $fGCopointSum$fGCopointIdentity$fGCopointDual $fGCopointAlt$fGCopoint(,,,,,,)$fGCopoint(,,,,,)$fGCopoint(,,,,)$fGCopoint(,,,)$fGCopoint(,,) $fGCopoint(,)$fGCopoint':.:$fGCopoint'Rec1$fGCopoint':*:$fGCopoint':+: $fGCopoint'M1 $fGCopoint'K1$fGCopoint'Par1 $fGCopoint'U1 $fConNames*M1$fConNames*M10$fConNames*:+:GEq'geq' $fGEqZipList $fGEqWordPtr $fGEqWord64 $fGEqWord32 $fGEqWord16 $fGEqWord8 $fGEqWord $fGEqVoid $fGEqVersion $fGEqURec $fGEqURec0 $fGEqURec1 $fGEqURec2 $fGEqURec3 $fGEqURec4$fGEqU1$fGEqSum$fGEqStablePtr $fGEqSeekMode $fGEqRec1$fGEqPtr $fGEqProxy $fGEqProduct $fGEqPar1 $fGEqOrdering $fGEqNatural $fGEqMaybe$fGEqM1 $fGEqLast$fGEqK1 $fGEqIOMode$fGEqIOErrorType$fGEqIOException $fGEqIntPtr $fGEqInteger $fGEqInt64 $fGEqInt32 $fGEqInt16 $fGEqInt8$fGEqInt $fGEqIdentity$fGEqHandlePosn $fGEqHandle$fGEqGeneralCategory $fGEqFunPtr$fGEqForeignPtr $fGEqFloat $fGEqFixity $fGEqFirst$fGEqFd $fGEqExitCode $fGEqErrno $fGEqEither $fGEqDual $fGEqDouble $fGEqCWchar $fGEqCUShort$fGEqCUSeconds $fGEqCULong $fGEqCULLong $fGEqCUIntPtr $fGEqCUIntMax $fGEqCUInt $fGEqCUid $fGEqCUChar $fGEqCTime $fGEqCTcflag $fGEqCSsize $fGEqCSize$fGEqCSigAtomic $fGEqCShort$fGEqCSUSeconds $fGEqCSpeed $fGEqCSChar $fGEqCRLim $fGEqCPtrdiff $fGEqCPid $fGEqConst $fGEqComplex $fGEqCOff $fGEqCNlink $fGEqCMode $fGEqCLong $fGEqCLLong $fGEqCIntPtr $fGEqCIntMax $fGEqCInt $fGEqCIno $fGEqChar $fGEqCGid $fGEqCFloat $fGEqCDouble $fGEqCDev $fGEqCClock $fGEqCChar$fGEqCCc$fGEqBufferMode $fGEqBool$fGEqAssociativity $fGEqArity$fGEqAny$fGEqAlt$fGEqAll$fGEq:.:$fGEq:*:$fGEq:+:$fGEq[] $fGEq(,,,,,,) $fGEq(,,,,,) $fGEq(,,,,) $fGEq(,,,) $fGEq(,,)$fGEq(,)$fGEq() $fGEq'*URec $fGEq'*URec0 $fGEq'*URec1 $fGEq'*URec2 $fGEq'*URec3 $fGEq'*URec4 $fGEq'*:*: $fGEq'*:+: $fGEq'*M1 $fGEq'*K1 $fGEq'*U1|||diagEnum'enum'skewcombine findIndexgenumNumUnboundedgenumNumSignedgenumNumUnsigned rangeEnum indexIntegral inRangeOrd $fGIxWordPtr $fGIxWord64 $fGIxWord32 $fGIxWord16 $fGIxWord8 $fGIxWord$fGIxSum $fGIxProxy $fGIxProduct $fGIxOrdering $fGIxNatural $fGIxMaybe $fGIxLast $fGIxIntPtr $fGIxInteger $fGIxInt64 $fGIxInt32 $fGIxInt16 $fGIxInt8$fGIxInt $fGIxIdentity $fGIxFixity $fGIxFirst$fGIxFd $fGIxExitCode $fGIxEither $fGIxDual $fGIxCWchar $fGIxCUShort $fGIxCULong $fGIxCULLong $fGIxCUIntPtr $fGIxCUIntMax $fGIxCUInt $fGIxCUid $fGIxCUChar $fGIxCTcflag $fGIxCSsize $fGIxCSize$fGIxCSigAtomic $fGIxCShort $fGIxCSChar $fGIxCRLim $fGIxCPtrdiff $fGIxCPid $fGIxCOff $fGIxCNlink $fGIxCMode $fGIxCLong $fGIxCLLong $fGIxCIntPtr $fGIxCIntMax $fGIxCInt $fGIxCIno $fGIxCGid $fGIxCChar $fGIxBool$fGIxAssociativity $fGIxArity$fGIxAny$fGIxAlt$fGIxAll$fGIx[] $fGIx(,,,,,,) $fGIx(,,,,,) $fGIx(,,,,) $fGIx(,,,) $fGIx(,,)$fGIx(,)$fGIx()$fGEnumZipList$fGEnumWordPtr $fGEnumWord64 $fGEnumWord32 $fGEnumWord16 $fGEnumWord8 $fGEnumWord $fGEnumU1 $fGEnumSum $fGEnumRec1 $fGEnumProxy$fGEnumProduct $fGEnumPar1$fGEnumOrdering$fGEnumNatural $fGEnumMaybe $fGEnumM1 $fGEnumLast $fGEnumK1 $fGEnumIntPtr$fGEnumInteger $fGEnumInt64 $fGEnumInt32 $fGEnumInt16 $fGEnumInt8 $fGEnumInt$fGEnumIdentity $fGEnumFloat $fGEnumFixity $fGEnumFirst $fGEnumFd$fGEnumExitCode $fGEnumEither $fGEnumDual $fGEnumDouble $fGEnumCWchar$fGEnumCUShort$fGEnumCUSeconds $fGEnumCULong$fGEnumCULLong$fGEnumCUIntPtr$fGEnumCUIntMax $fGEnumCUInt $fGEnumCUid $fGEnumCUChar $fGEnumCTime$fGEnumCTcflag $fGEnumCSsize $fGEnumCSize$fGEnumCSigAtomic $fGEnumCShort$fGEnumCSUSeconds $fGEnumCSpeed $fGEnumCSChar $fGEnumCRLim$fGEnumCPtrdiff $fGEnumCPid $fGEnumConst$fGEnumComplex $fGEnumCOff $fGEnumCNlink $fGEnumCMode $fGEnumCLong $fGEnumCLLong$fGEnumCIntPtr$fGEnumCIntMax $fGEnumCInt $fGEnumCIno $fGEnumCGid $fGEnumCFloat$fGEnumCDouble $fGEnumCDev $fGEnumCClock $fGEnumCChar $fGEnumCCc $fGEnumBool$fGEnumAssociativity $fGEnumArity $fGEnumAny $fGEnumAlt $fGEnumAll $fGEnum:.: $fGEnum:*: $fGEnum:+: $fGEnum[]$fGEnum(,,,,,,)$fGEnum(,,,,,) $fGEnum(,,,,) $fGEnum(,,,) $fGEnum(,,) $fGEnum(,) $fGEnum() $fEnum'*:*: $fEnum'*:+: $fEnum'*M1 $fEnum'*K1 $fEnum'*U1 GFunctor'gmap'$fGFunctorZipList $fGFunctorSum$fGFunctorProxy$fGFunctorProduct$fGFunctorMaybe$fGFunctorLast $fGFunctorIO$fGFunctorIdentity$fGFunctorFirst$fGFunctorEither$fGFunctorDual$fGFunctorConst$fGFunctorComplex $fGFunctorAlt $fGFunctor[] $fGFunctor(,)$fGFunctor(->)$fGFunctor'URec$fGFunctor'URec0$fGFunctor'URec1$fGFunctor'URec2$fGFunctor'URec3$fGFunctor'URec4$fGFunctor':.:$fGFunctor':*:$fGFunctor':+: $fGFunctor'M1$fGFunctor'Rec1 $fGFunctor'K1$fGFunctor'Par1 $fGFunctor'U1GShow' gshowsPrec' isNullaryRecTupPrefInf intersperseappPrec$fGShowZipList$fGShowWordPtr $fGShowWord64 $fGShowWord32 $fGShowWord16 $fGShowWord8 $fGShowWord $fGShowVoid$fGShowVersion $fGShowURec $fGShowURec0 $fGShowURec1 $fGShowURec2 $fGShowURec3 $fGShowU1 $fGShowSum $fGShow[]$fGShowSeekMode $fGShowRec1 $fGShowPtr $fGShowProxy$fGShowProduct $fGShowPar1$fGShowOrdering$fGShowNatural $fGShowMaybe $fGShowM1 $fGShowLast $fGShowK1 $fGShowIOMode$fGShowIOErrorType$fGShowIOException $fGShowIntPtr$fGShowInteger $fGShowInt64 $fGShowInt32 $fGShowInt16 $fGShowInt8 $fGShowInt$fGShowIdentity$fGShowHandlePosn $fGShowHandle$fGShowGeneralCategory $fGShowFunPtr$fGShowForeignPtr $fGShowFloat $fGShowFixity $fGShowFirst $fGShowFd$fGShowExitCode $fGShowEither $fGShowDual $fGShowDouble $fGShowCWchar$fGShowCUShort$fGShowCUSeconds $fGShowCULong$fGShowCULLong$fGShowCUIntPtr$fGShowCUIntMax $fGShowCUInt $fGShowCUChar $fGShowCTime $fGShowCSize$fGShowCSigAtomic $fGShowCShort$fGShowCSUSeconds $fGShowCSChar$fGShowCPtrdiff $fGShowConst$fGShowComplex $fGShowCLong $fGShowCLLong$fGShowCIntPtr$fGShowCIntMax $fGShowCInt $fGShowChar $fGShowCFloat$fGShowCDouble $fGShowCClock $fGShowCChar$fGShowBufferMode $fGShowBool$fGShowAssociativity $fGShowArity $fGShowAny $fGShowAlt $fGShowAll $fGShow:.: $fGShow:*: $fGShow:+: $fGShow[]0$fGShow(,,,,,,)$fGShow(,,,,,) $fGShow(,,,,) $fGShow(,,,) $fGShow(,,) $fGShow(,) $fGShow() $fGShow'URec $fGShow'URec0 $fGShow'URec1 $fGShow'URec2 $fGShow'URec3 $fGShow':*: $fGShow':+: $fGShow'M1 $fGShow'M10 $fGShow'M11 $fGShow'K1 $fGShow'U1Context'context' Uniplate' children'descend' descendM' transform' transformM' $fUniplate[]$fUniplateEither$fUniplateMaybe$fUniplate(,,,,,,)$fUniplate(,,,,,)$fUniplate(,,,,)$fUniplate(,,,)$fUniplate(,,) $fUniplate(,) $fUniplate() $fUniplateInt$fUniplateFloat$fUniplateDouble$fUniplateChar$fUniplateBool$fContext'*:*:b$fContext'*:*:a$fContext'*:+:b$fContext'*M1b$fContext'*K1b$fContext'*K1a$fContext'*U1b$fUniplate'*:*:b$fUniplate'*:+:b$fUniplate'*M1b$fUniplate'*K1b$fUniplate'*K1a$fUniplate'*U1a GFoldable' gfoldMap'$fGFoldableZipList$fGFoldableSum$fGFoldableProxy$fGFoldableProduct$fGFoldableMaybe$fGFoldableLast$fGFoldableIdentity$fGFoldableFirst$fGFoldableEither$fGFoldableDual$fGFoldableConst$fGFoldableComplex $fGFoldable[]$fGFoldable(,)$fGFoldable'URec$fGFoldable'URec0$fGFoldable'URec1$fGFoldable'URec2$fGFoldable'URec3$fGFoldable'URec4$fGFoldable':.:$fGFoldable':*:$fGFoldable':+:$fGFoldable'M1$fGFoldable'Rec1$fGFoldable'K1$fGFoldable'Par1$fGFoldable'U1memptymappendmconcatMonoid'mempty'mappend'GMonoid'gmempty' gmappend'$fGMonoid(,,,,,,,)$fGMonoid(,,,,,,)$fGMonoid(,,,,,)$fGMonoid(,,,,)$fGMonoid(,,,) $fGMonoid(,,) $fGMonoid(,)$fGMonoidIdentity$fGMonoidProxy$fGMonoidConst $fGMonoid(->)$fGMonoidMaybe $fGMonoidDual $fGMonoidAlt $fGMonoidEndo $fGMonoid[]$fGMonoidProduct $fGMonoidSum $fGMonoidLast$fGMonoidFirst $fGMonoidAll $fGMonoidAny $fGMonoid()$fGMonoidOrdering $fMonoid'*:*: $fMonoid'*M1 $fMonoid'*K1 $fMonoid'*U1$fGMonoid'*:*: $fGMonoid'*M1 $fGMonoid'*K1 $fGMonoid'*U1 Data.Monoid<>getDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLastgetAltAltMonoid GSemigroup' gsappend'$fGSemigroup(,,,,,,,)$fGSemigroup(,,,,,,)$fGSemigroup(,,,,,)$fGSemigroup(,,,,)$fGSemigroup(,,,)$fGSemigroup(,,)$fGSemigroup(,)$fGSemigroupVoid$fGSemigroupIdentity$fGSemigroupProxy$fGSemigroupEither$fGSemigroupConst$fGSemigroup(->)$fGSemigroupMaybe$fGSemigroupDual$fGSemigroupAlt$fGSemigroupEndo$fGSemigroup[]$fGSemigroupProduct$fGSemigroupSum$fGSemigroupLast$fGSemigroupFirst$fGSemigroupAll$fGSemigroupAny$fGSemigroup()$fGSemigroupOrdering$fGSemigroup'*:*:$fGSemigroup'*M1$fGSemigroup'*K1$fGSemigroup'*U1 GTraversable' gtraverse'$fGTraversableZipList$fGTraversableSum$fGTraversableProxy$fGTraversableProduct$fGTraversableMaybe$fGTraversableLast$fGTraversableIdentity$fGTraversableFirst$fGTraversableEither$fGTraversableDual$fGTraversableConst$fGTraversableComplex$fGTraversable[]$fGTraversable(,)$fGTraversable'URec$fGTraversable'URec0$fGTraversable'URec1$fGTraversable'URec2$fGTraversable'URec3$fGTraversable'URec4$fGTraversable':.:$fGTraversable':*:$fGTraversable':+:$fGTraversable'M1$fGTraversable'Rec1$fGTraversable'K1$fGTraversable'Par1$fGTraversable'U1