HOOG}t' GG0 1 a##&*--66bCCc  ##&+1166>@GGd"#++--e "$$++--//1166=BDEGGf"#77g5AAGJh$$..35@BDDi ""//27AADDFGk8<l#$((77==m  ##%*338<>>@BHHn  ""$$++1166AADDFJo##++..11=?ABp""&*1599>>q  !!'),,44::??IIr   ))--;;=?BBGGs./67==@DFFt   ""$$*+0137<<AADFJJu##&+11GJv>?w..35BBFFx EEy""1177CDz//25DDngd!Ge()0->AllAny BlockReasonBoolCCharVCClock$CDevCDoubleCFloat@CInoCIntCIntMaxhCIntPtr CLDoubleCLLongCLong7CModeCOffCPid_CPtrdiffCSCharCShort CSigAtomic?CSizeCSsizeCTime}CUChar5CUIntCUIntMaxCUIntPtr]CULLongCULongCUShortCWchar=Chan2CharComplex ConsoleEventConstr ConstrRepDataRepDataTypeDoubleDynamicE12tE6eEitherZErrnoV Exception:FdFixityFloatGeneralCategoryHandleHashDataIOIdtInsertspIntOInt166Int32Int64Int8 IntPtr Integer Lexeme Maybe3 NestedAtomically NoMethodError NonTermination Ordering P PatternMatchFail QSem QSemN ReadP ReadPrech RecConErrorO RecSelError6 RecUpdError STM StableName TVar ThreadId ThreadStatus Timeout TyCon TypeRep Unique Version{ Wordb Word16I Word320 Word64 Word8 WordPtr ZipList [::] []Q  TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorableEqOrdShowReadTypeableOrdEqDataDataTypeableShow ExceptionEqShowOrdEqDataShowEqOrdTypeable Typeable1 Typeable1 Typeable1FunctorMonadTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusTypeableTypeableTypeableShow ExceptionMonad MonadPlusMonoidDataIxTypeableShow ExceptionTypeableShow ExceptionTypeableShow Exception TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadShowEq PrintfArgDataBitsIx ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorable PrintfArgDataStorableBitsIxEqFunctor Applicative ApplicativeMonadFixShowEqDataIxBoundedShowReadEnumOrdEq PrintfArgDataStorableShowEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqTypeable ExceptionShowEqEq Typeable2 HasResolution HasResolution ExceptionTypeableShow PrintfArgDataStorableTypeableDataShowShowEqShowEqShowEqReadShowEnumOrdEqTypeable Typeable1 PrintfArgIsCharDataStorableIx Typeable1 ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqDataStorableIxShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqArrow ArrowChoice ArrowApply ArrowLoopCategoryMonoidDataEqOrdIxK" ByteCountCString  CStringLenCWString CWStringLen ClockTickConIndexDeviceID EpochTimeFileIDFileMode FileOffsetFilePathFinalizerEnvPtrO FinalizerPtr,GenericGenericBGenericMGenericQGenericRGenericTIOErrorIPrLimitMicroPicoPrecProcessGroupID ProcessIDRational}ReadSP SampleVar.ShowSString[]Char[]Char[]CharaMVar(,)IntMVaraa[]Char[](,)a[]CharRatioIntegerCPidCPidIntFixedE12FixedE6CLong(,)IntInt IOExceptionaammararmamaacacaaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoCTimeCDevIntCClock(,)PtrCWcharIntPtrCWchar(,)PtrCCharIntPtrCCharCSize(c[ca7^bZcMPdLeIfEgDh8Bi=j=k=l:m8nH5o2p5/q.r*s%t!uG v wziplistZipList# eo*ra8it emod%e,IOModep?ampPeWd^amjoqnxad WrappedMonadrrow WrappedArrowonad WrappedMonadrr ow WrappedArrowr1d8Word#1368pdtkrrWordPtrWord84Word642Word326Word16Word#akWeakWorde r s! i( o/ n6 Versionn)!p sX e_ rf im nt t{ e r r u p t AsyncExceptionp e r c a s e l e t t!e !r!GeneralCategorydZ!i5!q$eE$aL$dS$b%d%fU%i$%k$r$sx$t$a$t$u$s$ ThreadStatusu$n$n$i$n$g$ ThreadStatusi$l$l%e %d%AsyncExceptiond+%ThreadId#B% ThreadId#i\%nc%ij%sq%hx%e%d% ThreadStatusi%e%d% ThreadStatusl%o%c%k%e%d% ThreadStatusa*e>*h)op)p(t&uM&y%&m,&b3&o:&lA&Lexemem&rY&r`&og&gn&au&t|&e&GeneralCategorySumSTa'm'op'r&eF'i&n&g&Stringc'r&e'p'DataRepo'n"'s)'t0'r7' ConstrRepfa'pR'STRepSTRefrw'a~'b'l'e'StorableSTMb_(c (r't'e'#'State#r'a'y'STArrayk(o(v!(e((r/(f6(l=(oD(wK(AsyncExceptionlf(em(n(py(t(r( StablePtra(m(e( StableNamea(c(e[)i(n(g(c(o(m)b)i)n)i)n#)g*)m1)a8)r?)kF)GeneralCategoryGeneralCategorymw)e~)e)x)c)e)p)t)i)o)n) SomeExceptiono*u)t)d)o)w)n* ConsoleEventw*Shows/*ShowSeE*kL*f*mX*o_*df*em*SeekModer*o*m*e*n*d*SeekModem*p*l*e*v*a*r* SampleVara.e-+i +g+h+t!+Eithera:-cW,l ,q+tH+uO+rV+n]+id+nk+or+ry+d+e+r+ArgOrdera+u+i+r+e+o+r+d+e+r+ArgOrderr+g+ArgDescra,t,i,v&,e-,s4,e;,eB,kI,SeekModec,s,uh,po,dv,e},r,r,o,r, RecUpdErrore,l,e,r,r,o,r, RecSelErroro,n-e -r-r-o-r%- RecConErrord-lF-Realf-w^-oe-rl-ls-dz- RealWorldl-r-a-c-RealFraco-a-t- RealFloatReadm.pV.sG.w.r .i.t.e.m&.o-.d4.e;.IOModeReadSReadPrj.eq.cx.ReadPreco.d.e.IOModet.Lexemei.o.Ration.a.l.Rationals/e /m/QSemn&/QSemNa1ec1iG1o+1r/tt/uZ/na/ch/Lexemer{/Ptre0iH0o/c/d/u/c/t/Producte/s/s/g0i/d/ ProcessIDr 0o0u0p"0i)0d00ProcessGroupIDn0vT0a[0tb0ei0up0sw0e~0GeneralCategoryt0f0a0t0y0p0e0 PrintfTyper0g0 PrintfArgc1f1i 1x1FixityPreco21l91PoolcN1oU1Picorj1mq1ux1t1e1ArgOrderr2t1t1e1r1n1m1a1t1c1h1f1a1i1l1PatternMatchFaila2g#2r*2a12p82h?2sF2eM2pT2a[2rb2ai2tp2ow2r~2GeneralCategoryp\4r4t2v2e2r2f2l2o2w2ArithExceptionh2e2r2l3n3pJ3s3y3m 3b'3o.3l53GeneralCategoryuQ3nX3c_3tf3um3at3t{3i3o3n3GeneralCategoryu3m3b3e3r3GeneralCategorye3t3t3e3r4GeneralCategoryd4Orde.4r54i<4nC4gJ4Orderinge4th4a4d4iy4o4n4OptDescre4s4c4r4OptDescrr4g4ArgDescrn4p4u4n4c5t 5u5a5t5i%5o,5n35GeneralCategorye7om5uY5m`5Numa7b<7m6n6r5t5a5h5i5n5g5Maybes5s5i5g5n5e5d5GeneralCategorye6p 6DataReps6t&6e-6r46m;6iB6nI6aP6tW6i^6oe6nl6NonTerminationp6a6c6i6n6g6m6a6r6k6GeneralCategorye6t6h6o6d7e 7r7r7o7r%7 NoMethodErroruC7fJ7fQ7eX7r_7if7nm7gt7 BufferModer7g7ArgDescrs7t7e7d7a7t7o7m7i7c7a7l7l7y8NestedAtomicallya:ig:o*9ug8v78a>8rE8MVar#X8MVar#tn8au8b|8l8e8a8b8y8t8e8a8r8r8a8y8#8MutableByteArray#r8r8a9y 9#9 MutableArray#d9n69a`9oB9iI9dP9Monoiddg9Monadf9p9l9u9s9 MonadPlusi9x9MonadFixi9f9i9e9r9l/:s9y9m:b :o:l:GeneralCategorye6:t=:tD:eK:rR:GeneralCategorycn:ru:o|:Microt:y:b:e:Maybeh:s:y:m:b:o:l:GeneralCategorya=e<i<o;g;s;w!;e(;r/;c6;a=;sD;eK;lR;eY;t`;tg;en;ru;GeneralCategorys;o;f;p;r;e;c;i;s;i;o;n;ArithExceptiono;f<f< ConsoleEventm<n%<e,<b<s8<e?<pF<aM<rT<a[<tb<oi<rp<GeneralCategoryu<f<f<e<r<i<n<g< BufferModei<t<Limitft=t =x<e=m =e=Lexemet'=e.=r5=n<=uC=mJ=bQ=eX=r_=GeneralCategoryt{=Eithers=t=Lastl=e=i=s=l=i=Kleisliu=s=t=MaybedBgAn?o>p>s/>x#>Ixcp>s;>tB>rI>iP>nW>g^>IsStringhw>a~>r>IsCharr>IPrIOe?m>r>e>f>IORefo>d>e>IOModerX?x?c?e ?p'?t.?i5?oLsELiLLnSLgZLmaLahLroLkvLGeneralCategorytLhLeLrLEitherE62LE12asOe3NiMoMuwMyLnLaQMe MxMcMeMp&Mt-Mi4Mo;MnBM ExceptionmXMi_McfMDynamica~MlMDualuMwMnMDownbMlMeMDoublevMiMdMeMbMyNz NeNrNoNArithExceptiona>OcNfNnNvNNiUNc\NecNijNdqNDeviceIDoNrNmNaNlNArithExceptionaNuNlNtNHandleriNmNaNlNnOu OmObOe"Or)OGeneralCategorydEOlLOoSOcZOkaODeadlocksOtOaODatarOtOyOpOeODataTypeeOpODataRephOpOuOnPcPtPuPaPt#Pi*Po1Pn8PGeneralCategoryaYc]YdYfXhpXiWjWlVm`VofTpTsRtRu(QwPcQsPtPrPiPnPgPCWStringlPePnP CWStringLenh QaQrQCWcharcRi"RlQrpQsCQhJQoQQrXQt_QCUShortrwQe~QnQcQyQsQyQmQbQoQlQGeneralCategorylQoQnQgQCULongoRn RgRCULLongn)Rt0RCUIntmiRpIRtPRrWRCUIntPtrapRxwRCUIntMaxhRaRrRCUChariRmReRCTimecShSifSsAStRrRiRnSg SCStringlSe&Sn-S CStringLeniHSzOSeVSCSsizegSzrSeySCSizeaStSoSmSiScS CSigAtomicoSrStSCShorthSaSrTCSChariQTtTr#Td*Ti1Tf8Tf?TCPtrdiffdXTCPidfKVmVnwTiUnkUsTtTrToTlTGeneralCategorycT ConsoleEvento$UtTConstrTConstrrUe UpU ConstrRepl+Ue2Ue9Uv@UeGUnNUtUU ConsoleEventerUcyUtUoUrUpUuUnUcUtUuUaUtUiUoUnUGeneralCategorynUdUeVx VConIndexp%Vl,Ve3Vx:VComplexfRVCOffogVdnVeuVCModedWlkWoVc5WnWsVeV ConsoleEventpVuVnVcVtVuVaVtViVoWn WGeneralCategoryg&WCLongkaeEapLatSaiZaoaanhaArithExceptiondaoaradaearaArgOrdereasacaraArgDescrpaeAblaibc babtbibv%be,b ApplicativenHbdObmVbo]bddbekbIOModey~bAnygblbtbebrbnbabtbibvbeb AlternativeAllccrce cpcDataRepo$cn+cs2ct9cr@c ConstrRepdVcr]c#dcAddr#szcoclcuctcecscececkcSeekMode:c]c[]:c]c[::])d()dgffWfeeddGenericTa#Inta!aa"ra3taMaybeGenericMaacaamamGenericMar[]a2rma uMaybear[]GenericQaBool  GenericT'$Int  a.&% d1q/*rda(,)(ra(,)54dca(,)dma(,)'q[]a(,)) Char[] aMaybeacam-,cGeneric'dm0m GenericM'r GenericQ'+yMaybeChar[]a(,)[]g rnm.llkkjjiuiihhtsarrr3rrr'5rr'r4sstea(,)ea(qa(,)ea)r'a(,)ea54ema(,)ea'gca(,)ga Boola"!Boolr2GenericTa#aa&%$"bb.&ee1qa*qb*qd/ra3+rb rca(,)ereca MaybeGenericMaacaamabmb-,eme0mGenericMarGenericQarma  uMaybeaqet/ftft1ftmft0 GenericT' a54.-,*)('&%  bd 5410/)('r54sx Char[]aMaybeacambcbmcGeneric'dmm GenericM'r GenericQ'etm5tttttutLttsssssstsUs5sssrrrrrxrfr[r?rrqqqqqqTq@q5q&qqpppppip MonadPlusmTypeableaTypeableb=MonadmTypeableaTypeableb2GenericQTypeableaTypeableb-Datad0Datad,DatadMonadmTypeableaTypeableb 6;GenericQ GenericQGenericTGenericQ  MonadPlusmGenericQ MonadPlusmTypeableaTypeablebMonadmTypeableaTypeableb MonadPlusmGenericMCF MonadPlusmGenericMMonadmGenericM+)DatadGenericEGenericQ:GenericQ9MonadmGenericQ8GenericQ(DataxTypeableyGGenericQ?TypeableaTypeablebD MonadPlusmGenericQ7TypeableaGenericQTypeableaTypeableb'Dataa5Dataa*1GenericQ4DataaStringKDatadMonadm Typeable1t@ MonadPlusmTypeableaTypeablebMonadmTypeableaTypeablebTypeableaTypeableb3DataaReadSBJGenericQIHGenericJ}q}U};}}||||}|g|Q|;|%||{{{{{{{{a{A{%{ {zzzzyz]z?z-zzyyyyyay?yyxxxxxx}xixKx-xxwwwwww{wcwEw)wwvvvvvwvWvCv/vvungt$vunGTKungq8vunGQJungmLvunGMI ungeneric'fv unGeneric'HtwinsvTwinstextvText synthesizev synthesizeGsybvsyb somewherev somewhereF somethingv somethingEschemeswSchemesrecoverq6wrecoverQD recovermpSw recoverMpCorelsenworElseBmktwmkTAmkrwmkR@mkqwmkQ?mkmpwmkMp>mkmwmkM=listifywlistify< instancesw Instances gzipwithtx gzipWithT; gzipwithq;x gzipWithQ: gzipwithmYx gzipWithM9gziprxgzip8 gtypecountx gtypecount7gtxGT6gsizexgsize5gshowxgshow4greadxgread3gqxGQ2 gnodecounty gnodecount1 gmapaccumt.y gmapAccumT0 gmapaccumqrOy gmapAccumQr/ gmapaccumqlqy gmapAccumQl. gmapaccumqy gmapAccumQ- gmapaccummy gmapAccumM,gmyGM+glengthyglength* gfoldlaccumy gfoldlAccum) gfindtypez gfindtype(geq5zgeq' generict'Mz GenericT'&generictjzGenericT%genericszGenericsgenericrzGenericR$ genericq'z GenericQ'#genericqzGenericQ" genericm'z GenericM'!genericm{GenericM genericb2{GenericBgeneric'N{Generic'genericm{Genericgdepth{gdepthgcount{gcountextt{extTextr{extRextq{extQextmp{extMpextm|extMextb|extBext1t/|ext1Text1rE|ext1Rext1q[|ext1Qext1mq|ext1Mext0|ext0 everywherem| everywhereM everywherebut| everywhereBut everywhere'| everywhere' everywhere } everywhere everything*} everything choiceqG}choiceQ choicempb}choiceMpbasics|}Basicsaliases}AliasesKcu׮5 R&=PR_z۟Qݞ|5b_* GRʑ5NId*/%1Ƀ3;~unGTunGT ::  GenericT' -> a -> a7# GenericT'aaunGQunGQ ::  GenericQ' r ->  GenericQ r GenericQ'rGenericQrunGMunGM ::  GenericM' m -> a -> m a GenericM'mama unGeneric' unGeneric' ::  Generic' c ->  Generic cqGeneric'cGenericc synthesize  synthesize :: s ->  (t -> s -> s) -> GenericQ (s -> t) ->  GenericQ tKstssGenericQstGenericQtBottom-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 term  somewhere somewhere :: MonadPlus m =>  GenericM m ->  GenericM mƂ MonadPlusmGenericMmGenericMm2Apply a monadic transformation at least somewhere  something something :: GenericQ (Maybe u) -> GenericQ (Maybe u)_GenericQMaybeuGenericQMaybeu3Look up a subterm by means of a maybe-typed filter recoverQrecoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r)|> MonadPlusmrGenericQmrGenericQmr8Recover from the failure of monadic query by a constant  recoverMp recoverMp :: MonadPlus m =>  GenericM m ->  GenericM mK MonadPlusmGenericMmGenericMm?Recover from the failure of monadic transformation by identity orElseorElse :: Maybe a -> Maybe a -> Maybe aMaybeaMaybeaMaybeaLeft-biased choice on maybies mkTmkT :: (Typeable a, Typeable b) => (b -> b) -> a -> aņTypeableaTypeablebbbaa\Make a generic transformation; start from a type-specific case; preserve the term otherwise mkRmkR :: )(MonadPlus m, Typeable a, Typeable b) => m b -> m aȇ MonadPlusmTypeableaTypeablebmbmacMake a generic builder; start from a type-specific ase; resort to no build (i.e., mzero) otherwise mkQ mkQ :: (Typeable a, Typeable b) => r -> (b -> r) -> a -> rӈTypeableaTypeablebrbrarSMake a generic query; start from a type-specific case; return a constant otherwise mkMpmkMp :: )(MonadPlus m, Typeable a, Typeable b) =>  (b -> m b) -> a -> m a MonadPlusmTypeableaTypeablebbmbamauMake a generic monadic transformation for MonadPlus; use "const mzero" (i.e., failure) instead of return as default. mkMmkM :: %(Monad m, Typeable a, Typeable b) =>  (b -> m b) -> a -> m a֊MonadmTypeableaTypeablebbmbamacMake a generic monadic transformation; start from a type-specific case; resort to return otherwise listifylistify :: Typeable r =>  (r -> Bool) ->  GenericQ [r]TypeablerrBoolGenericQ[]r1Get a list of all entities that meet a predicate  gzipWithT gzipWithT :: GenericQ GenericT -> GenericQ GenericTٌGenericQGenericTGenericQGenericTTwin map for transformation  gzipWithQ gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])dGenericQGenericQrGenericQGenericQ[]rTwin map for queries  gzipWithM gzipWithM ::  Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)u0MonadmGenericQGenericMmGenericQGenericMm$Twin map for monadic transformation gzipgzip :: GenericQ (GenericM Maybe) -> GenericQ (GenericM Maybe)EGenericQGenericMMaybeGenericQGenericMMaybeAGeneric zip controlled by a function with type-specific branches  gtypecount gtypecount :: Typeable a => a ->  GenericQ Int TypeableaaGenericQInt>Determine the number of nodes of a given type in a given term GTGT :: (a -> a) ->  GenericT'aa GenericT'gsizegsize ::  Data a => a -> IntDataaaInt,Compute size of an arbitrary data structure gshowgshow ::  Data a => a -> String}DataaaString0Generic show: an alternative to "deriving Show" greadgread ::  Data a => ReadS aDataaReadSa0Generic read: an alternative to "deriving Read" GQGQ ::  GenericQ r ->  GenericQ' rGenericQr GenericQ'r gnodecount gnodecount ::  GenericQ IntGenericQInt2Determine the number of all nodes in a given term  gmapAccumT  gmapAccumT ::  Data d => (a -> e -> (a, e)) -> a -> d -> (a, d)ēDatadae(,)aead(,)adgmapT with accumulation  gmapAccumQr gmapAccumQr ::  Data d => (r' -> r -> r) -> r -> (a -> e -> (a, r')) -> a -> d -> (a, r)Datadr'rrrae(,)ar'ad(,)argmapQr with accumulation  gmapAccumQl gmapAccumQl ::  Data d => (r -> r' -> r) -> r -> (a -> e -> (a, r')) -> a -> d -> (a, r) ǕDatadrr'rrae(,)ar'ad(,)argmapQl with accumulation  gmapAccumQ  gmapAccumQ ::  Data d => (a -> e -> (a, q)) -> a -> d -> (a, [q])Datadae(,)aqad(,)a[]qgmapQ with accumulation  gmapAccumM  gmapAccumM :: (Data d, Monad m) => (a -> e -> (a, m e)) -> a -> d -> (a, m d)ٗDatadMonadmae(,)amead(,)amdgmapM with accumulation GMGM ::  (a -> m a) ->  GenericM' m[;ama GenericM'mglengthglength ::  GenericQ IntGenericQInt9Count the number of immediate subterms of the given term  gfoldlAccum  gfoldlAccum ::  Data d => "(a -> c (e -> r) -> e -> (a, c r)) -> (a -> g -> (a, c g)) -> a -> d -> (a, c d)Datadacere(,)acrag(,)acgad(,)acdgfoldl with accumulation  gfindtype gfindtype :: (Data x, Typeable y) => x -> Maybe y}DataxTypeableyxMaybey:Find (unambiguously) an immediate subterm of a given type geqgeq ::  Data a => a -> a -> BoolP6DataaaaBool2Generic equality: an alternative to "deriving Eq"  GenericT'newtype  GenericT''Other first-class polymorphic wrappers GenericTtype GenericT = a -> a!=Generic transformations, i.e., take an "a" and return an "a" GenericRtype GenericR m = m aZGeneric readers, say monadic builders, i.e., produce an "a" with the help of a monad "m".  GenericQ'newtype  GenericQ' r1GenericQtype GenericQ r = a -> rrBGeneric queries of type "r", i.e., take any "a" and return an "r"  GenericM'newtype  GenericM' mGenericMtype GenericM m = a -> m a2FGeneric monadic transformations, i.e., take an "a" and compute an "a" GenericBtype GenericB = a'Generic builders i.e., produce an "a". Generic'Generic' ::  Generic c ->  Generic' cM-GenericcGeneric'cGeneric'data Generic' cTWrapped generic functions; recall: [Generic c] would be legal but [Generic' c] not. Generictype Generic c = a -> c axThe general scheme underlying generic functions assumed by gfoldl; there are isomorphisms such as GenericT = Generic T. gdepthgdepth ::  GenericQ Intߠ͠GenericQInt"Determine depth of the given term gcountgcount ::  GenericQ Bool ->  GenericQ Int}WGenericQBoolGenericQInt;Determine the number of all suitable nodes in a given term extT extT :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> an7TypeableaTypeablebaabbaa8Extend a generic transformation by a type-specific case extRextR :: %(Monad m, Typeable a, Typeable b) => m a -> m b -> m a^MonadmTypeableaTypeablebmambmaExtend a generic reader extQ extQ :: (Typeable a, Typeable b) => (a -> q) -> (b -> q) -> a -> q,TypeableaTypeablebaqbqaq/Extend a generic query by a type-specific case extMp extMp :: )(MonadPlus m, Typeable a, Typeable b) =>  (a -> m a) ->  (b -> m b) -> a -> m aE MonadPlusmTypeableaTypeablebamabmbamaBExtend a generic MonadPlus transformation by a type-specific case extM extM :: %(Monad m, Typeable a, Typeable b) =>  (a -> m a) ->  (b -> m b) -> a -> m agMonadmTypeableaTypeablebamabmbama@Extend a generic monadic transformation by a type-specific case extBextB :: (Typeable a, Typeable b) => a -> b -> a5 TypeableaTypeablebabaExtend a generic builder ext1T ext1T :: (Data d, Typeable1 t) => (e -> e) ->  (t f -> t f) -> d -> dЧDatad Typeable1teetftfdd>Type extension of transformations for unary type constructors ext1Rext1R :: "(Monad m, Data d, Typeable1 t) => m d -> m (t e) -> m d ¨MonadmDatad Typeable1tmdmtemd0Type extension of readers for type constructors ext1Q ext1Q :: (Data d, Typeable1 t) => (d -> q) ->  (t e -> q) -> d -> qDatad Typeable1tdqteqdq0Type extension of queries for type constructors ext1M ext1M :: "(Monad m, Data d, Typeable1 t) =>  (e -> m e) -> (t f -> m (t f)) -> d -> m dMonadmDatad Typeable1temetfmtfdmd@Type extension of monadic transformations for type constructors ext0ext0 :: (Typeable a, Typeable b) => c a -> c b -> c aTypeableaTypeablebcacbcaFlexible type extension  everywhereM everywhereM ::  Monad m =>  GenericM m ->  GenericM moMonadmGenericMmGenericMm Monadic variation on everywhere  everywhereBut everywhereBut ::  GenericQ Bool -> GenericT -> GenericTY0GenericQBoolGenericTGenericT5Variation on everywhere with an extra stop condition  everywhere' everywhere' :: (a -> a) -> a -> aaaaa5Apply a transformation everywhere in top-down manner  everywhere everywhere :: (a -> a) -> a -> aaaaa6Apply a transformation everywhere in bottom-up manner  everything everything ::  (r -> r -> r) ->  GenericQ r ->  GenericQ rqErrrGenericQrGenericQr5Summarise all nodes in top-down, left-to-right order choiceQchoiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r)y* MonadPlusmGenericQmrGenericQmrGenericQmrChoice for monadic queries choiceMpchoiceMp :: MonadPlus m =>  GenericM m ->  GenericM m ->  GenericM mN MonadPlusmGenericMmGenericMmGenericMm#Choice for monadic transformations Twinsmodule Data.Generics.Twins"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides support for multi-parameter traversal, which is also demonstrated with generic operations like equality. Textmodule Data.Generics.TextѲ"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides generic operations for text serialisation of terms. sybpackage syb[Scrap Your Boilerplate This package contains the generics system described in the Scrap Your Boilerplate papers (see http://www.cs.vu.nl/boilerplate/). It defines the Data class of types permitting folding and unfolding of constructor applications, instances of this class for primitive types, and a variety of traversals. Schemesmodule Data.Generics.SchemesH"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides frequently used generic traversal schemes.  Instancesmodule Data.Generics. Instances:%"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module contains thirteen Data instances which are considered dubious (either because the types are abstract or just not meant to be traversed). Instances in this module might change or disappear in future releases of this package. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. (This module does not export anything. It really just defines instances.) Genericsmodule Data.Genericsj"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. To scrap your boilerplate it is sufficient to import the present module, which simply re-exports all themes of the Data.Generics library. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. Basicsmodule Data.Generics.Basics<"Scrap your boilerplate" --- Generic programming in Haskell. See http://www.cs.vu.nl/boilerplate/. This module provides the Data class with its primitives for generic programming, which is now defined in Data.Data. Therefore this module simply re-exports Data.Data. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. Aliasesmodule Data.Generics.Aliases"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides a number of declarations for typical generic function types, corresponding type case, and others. u^J5&DataGenericsDataGenericsTwinsDataGenericsTextDataGenericsSchemesDataGenericsAliasesDataGenericsBasicsDataGenerics Instancesýsyb0.1.0.1Ahttp://hackage.haskell.org/packages/archive/syb/0.1.0.1/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/syb