\>/      !"#$%&'()*+,-.None/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~//0123456SafeA sized functor is an applicative functor extended with a notion of cost/size of contained values. This is useful for any type of bounded recursion over infinite sets, most notably for various kind of enumerations.  The intention is that every sized functor definition models a (usually) infinite set (technically a bag) with a finite number of values of any given size. As long as every cyclic (recursive) definition has at least one application of pay, this invariant is guaranteed.  The module Control.Enumerable provides sized functor definitions for a lot of data types, such that the size of a value is the number of constructor applications it contains. It also allows deriving these functors for any user defined data type (using Template Haskell). 8Increases the cost/size of all values in the given set.  Default: pair a b = (,)  $ a  * b.  Default: aconcat = foldr (<|>) emptyFinite numeric types. fin n contains all non-negative numbers below n. This definition is flat, all integers have the same size. Implementing this function efficiently will have a great impact on applications that use a lot of bounded numberic types (e.g. Int).%Default: aconcat (map pure [0..n-1]) Same as  but the size of values may differ. By default, the size of an integer is the number of significant bits in its binary representation. In other words, 0 has size zero, the values for size k>0 in  finBits n are in the interval (2^(k-1),min (2^k-1) n). pNon-negative integers. By default, the size of an integer is the number of digits in its binary representation.   %    None Work in progress.A class of infinite precision integral types. ! is the principal class member.;Used instead of enumerate when manually building instances.{Guarantees local sharing. All enumerations are shared inside each invokation of local, but may not be shared between them. This is the primary way to access enumerations for usage. Guarantees global sharing of enumerations of the same type. Note that this means the enumerations are never garbage collected. LBuilds an enumeration of a data type from a list of constructors (see c0-c7)/Takes a constructor with arity 0 (a pure value)Takes a constructor of arity 1Bijection into the rationals!Builds a suitable definition for  coEnumerateO given an pattern matching function for a data type (see source for examples). #dDerive an instance of Enumberable with Template Haskell, with rules for some specific constructorsNot a proper injectionNot a proper injectionASCII charactersThe unit constructor is free@  !"#      !"#$%&A  !"# !" # >  !"#      !"#$%&None+''Constructs all values of a given size. ()Constructs all values up to a given size.'()*$%&'()+,-./0123$%&'()'()$%&'()*$%&'()+,-./0123None+*JCounts the number of values of a all sizes. Usage: @global :: Count [Bool]-ACounts the number of values of a given size, 0 if out of bounds. *+,45-6.789:;<=>?@ABCDEFGHIJKLMF  !"#*+,-.*+,-.*+,45-6.789:;<=>?@ABCDEFGHIJKLM6.N    !"#$%&'()*+,-../01233456789:;<=>?@A?@B?@C?DE?DF?DG?DH?DI?DJ?DK?DL?DM?DN?DO?DP?DQ?DR?DS?DT?DU?DV?DW?DX?DY?DZ?D[?D\?D]?D^?D_?D`?Da?Db?Dc?Dd?De?Df?Dg?Dh?Di?Dj?Dk?Dl?Dm?Dn?Do?Dp?Dq?Dr?Ds?Dt?Du?Dv?Dw?Dx?Dy?Dz?D{?D|?D}?D~?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?@?@?@?@?D?D?@?D?D?D?D?D?@?@?D?D?@?@?@?D?D?@?@?D?@?D?D?D?@?@?@?@?@?@?@?@?@?????????D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D?D ?D ?D ?D ?D ?D?D?D?D?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@ ?@!?@"?@#?@$?@%?@&?@'?@(?@)?@*?@+?@,?@-?@.?@/?@/?@0?@1?@2?@3?@4?@5?@6?@7?@8?@9?@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?@{?@|?@}?@~?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@?@      !"#$%&'()*+,-../0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSIB1cKd1zESM9EgxSTfKjj3Control.Enumerable Control.SizedControl.Enumerable.ValuesControl.Enumerable.CountControl.Enumerable.DerivebaseData.Typeable.InternalTypeabledicti_535LWtaeTd7Fx39FP4lJz6Data.ClassSharingshareShared ShareableSizedpaypairaconcatfinfinSizednaturalskbitsConstructorDeriv CoEnumerable coEnumerateInfinite Enumerable enumerateaccesslocalglobaldatatypec0c1c2c3c4c5c6c7functionderiveEnumerabledAll dExcludingdExceptderiveEnumerable'Values runValuesvaluesvalues' allValuesCountcount!!* instanceFormkInstanceType extractDatatvbNameconDataxtoTypetupstemplate-haskellLanguage.Haskell.TH.SyntaxnewNamemkNameunTypeLanguage.Haskell.TH.LibcharLstringLintegerLintPrimL wordPrimL floatPrimL doublePrimL rationalLlitPvarPtupPconPinfixPtildePbangPasPwildPrecPlistPsigPviewPfieldPatmatchclausevarEconElitEappEinfixEinfixAppsectionLsectionRlamElamCaseEtupEcondEmultiIfEletEcaseEdoEcompEfromE fromThenEfromToE fromThenToElistEsigErecConErecUpdEstaticEfieldExpguardedBnormalBnormalGEpatGEbindSletSnoBindSparSfunDvalDdataDnewtypeDtySynDclassD instanceDsigDforImpDpragInlD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD familyNoKindD familyKindD dataInstD newtypeInstD tySynInstDclosedTypeFamilyKindDclosedTypeFamilyNoKindD roleAnnotDstandaloneDerivD defaultSigDcxtisStrict notStrictnormalCrecCinfixCforallC strictType varStrictTypeforallTvarTconTtupleTarrowTlistTappTsigT equalityTlitT promotedTpromotedTupleT promotedNilT promotedConsTnumTyLitstrTyLitnominalRrepresentationalRphantomRinferRvarKconKtupleKarrowKlistKappKstarK constraintKcCallstdCallcApiprim javaScriptunsafesafetypeFamdataFamtySynEqnruleVar typedRuleVarExpMatchClauseQExpQDecQPatMatchQClauseQStmtQConQTypeQTypeDecVarStrictTypeQ StrictTypeQFieldExpFieldPatNamePatQ FieldPatQFunDepPredPredQ TyVarBndrDecsQ RuleBndrQ TySynEqnQTExpNoInlineInline InlinableConLikeFunLike AllPhases FromPhase BeforePhaseLanguage.Haskell.TH.Ppr pprParendTypepprPatpprLitpprExppprintppr_listpprPpr thisModuleappsEequalPclassP pragLineDstringE arithSeqElam1EuInfixEparensEdynpatGnormalG fromThenToRfromToR fromThenRfromRparensPuInfixP stringPrimLInfoQTyLitQCxtQBodyQGuardQRangeQ defaultFixity maxPrecedenceunboxedTupleTypeNameunboxedTupleDataName tupleTypeName tupleDataName nameModulenameBaserunIOlocation isInstance reifyModulereifyAnnotations reifyRolesreifyInstancesreifylookupValueNamelookupTypeNamerecover reportWarning reportErrorreportrunQ NameSpaceloc_end loc_start loc_module loc_package loc_filenameLocTyVarIVarIDataConI PrimTyConIFamilyITyConIClassOpIClassIInfo ModuleInfo ParentNameArityUnlifted InstanceDecFixityInfixNInfixRInfixLFixityDirection StringPrimL DoublePrimL FloatPrimL WordPrimLIntPrimL RationalLIntegerLStringLCharLLitViewPSigPListPRecPWildPAsPBangPTildePParensPUInfixPInfixPConP UnboxedTupPTupPVarPLitPStaticERecUpdERecConESigEListE ArithSeqECompEDoECaseELetEMultiIfECondE UnboxedTupETupELamCaseELamEParensEUInfixEInfixEAppELitEConEVarENormalBGuardedBBodyPatGNormalGGuardParSNoBindSLetSBindSStmt FromThenToRFromToR FromThenRFromRRange DefaultSigDStandaloneDerivD RoleAnnotDClosedTypeFamilyD TySynInstD NewtypeInstD DataInstDFamilyDPragmaDInfixDForeignDSigD InstanceDClassDTySynDNewtypeDDataDValDFunDTySynEqnDataFamTypeFam FamFlavourExportFImportFForeign JavaScriptPrimCApiStdCallCCallCallconv InterruptibleSafeUnsafeSafetyLinePAnnPRulePSpecialiseInstP SpecialisePInlinePPragma RuleMatchPhases TypedRuleVarRuleVarRuleBndrValueAnnotationTypeAnnotationModuleAnnotation AnnTargetCxtUnpacked NotStrictIsStrictStrictForallCInfixCRecCNormalCConLitT ConstraintTStarT PromotedConsT PromotedNilTPromotedTupleTListT EqualityTArrowT UnboxedTupleTTupleT PromotedTConTVarTSigTAppTForallTKindedTVPlainTVStrTyLitNumTyLitTyLitInferRPhantomRRepresentationalRNominalRRole AnnLookupNameAnnLookupModule AnnLookupKind stdNaturals stdNaturals' stdFinBitsGHC.Base<*>pure ApplicativeControl.ApplicativeoptionalgetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$>liftA3liftA2liftA<**><$<**>manysome<|>empty Alternative integer-gmpGHC.Integer.TypeIntegerrat$fEnumerableDouble$fEnumerableFloat$fEnumerableChar$fEnumerable()grefenumerateBoundedwordintbitSize'$fCoEnumerable[]$fCoEnumerableBool$fEnumerable(->)$fEnumerableNonEmpty$fEnumerableNat$fEnumerablePrintable$fEnumerableUnicode$fEnumerableRatio$fInfiniteInteger$fEnumerableInt64$fEnumerableInt32$fEnumerableInt16$fEnumerableInt8$fEnumerableInt$fEnumerableWord64$fEnumerableWord32$fEnumerableWord16$fEnumerableWord8$fEnumerableWord$fEnumerableInteger$fEnumerableOrdering$fEnumerableMaybe$fEnumerable[]$fEnumerableEither$fEnumerableBool$fEnumerable(,,,,)$fEnumerable(,,,)$fEnumerable(,,)$fEnumerable(,)$fSizedShareableTTMaxSize runMaxSizetst1$fSizedMaxSize$fAlternativeMaxSize$fApplicativeMaxSize$fFunctorMaxSize $fSizedValues$fAlternativeValues$fApplicativeValues$fFunctorValuesuntypedcompact<->yap reversals'firstrevconvconv'cardTakecardRevstrictstrictLcapmultprodsKprodsKRprodsK'ultraDiv initTails baseCosts $fSizedCount $fMonoidCount$fAlternativeCount$fApplicativeCount$fFunctorCount