h*,:      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`0.1.3.3 Safe-Inferredabcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferred size-basedA 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). size-based7Increases the cost/size of all values in the given set. size-based Default: pair a b = (,)  $ a  * b. size-based Default: aconcat = foldr (<|>) empty size-basedFinite 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 numeric types (e.g. Int).%Default: aconcat (map pure [0..n-1])  size-basedSame 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).  size-basedNon-negative integers. By default, the size of an integer is the number of digits in its binary representation.&   Safe-Inferred  size-basedWork in progress size-based.A class of infinite precision integral types.  is the principal class member. size-based;Used instead of enumerate when manually building instances. size-basedGuarantees local sharing. All enumerations are shared inside each invocation of local, but may not be shared between them. size-basedThis 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. size-basedBuilds an enumeration of a data type from a list of constructors (see c0-c7) size-based/Takes a constructor with arity 0 (a pure value) size-basedTakes a constructor of arity 1 size-basedBijection into the rationals size-based!Builds a suitable definition for  coEnumerate given an pattern matching function for a data type (see source for examples).# size-basedDerive an instance of Enumberable with Template Haskell, with rules for some specific constructors( size-basedNot a proper injection) size-basedNot a proper injection* size-basedASCII characters? size-basedThe unit constructor is free !" #    !" #  Safe-Inferred7I size-based&Constructs all values of a given size.J size-based)Constructs all values up to a given size.IJKFGHIJKFGH Safe-Inferred7U size-basedCounts the number of values of a all sizes. Usage: @global :: Count [Bool]X size-basedCounts the number of values of a given size, 0 if out of bounds.UVWXY    !"#UVWXY3Y4    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWXYZ[\]^__`abcdefghijklmklnkloklpklqklrklskltkluklvklwklxklyklzkl{kl|kl}kl~klklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkklklklklklklklklklklklklklklklklklklklklklklklklkklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkklklklkkklklklklklklklklklklklklklklklklklklklklklklklklklkklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklklklkkkklklklkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklklkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk)size-based-0.1.3.3-4O5x8Qdgry84fAgN6VQ1kiControl.Enumerable Control.SizedControl.Enumerable.ValuesControl.Enumerable.Count size-basedControl.Enumerable.DerivebaseData.Typeable.InternalTypeable1dictionary-sharing-0.1.0.0-7gLl4MEFy50HUnnX5hDhssData.ClassSharing ShareableSharedshareSizedpaypairaconcatfinfinSizednaturalskbitsConstructorDeriv CoEnumerable coEnumerateInfinite Enumerable enumerateaccesslocalglobaldatatypec0c1c2c3c4c5c6c7functionderiveEnumerabledAll dExcludingdExceptderiveEnumerable'$fSizedShareable$fEnumerableNonEmpty$fEnumerablePrintable$fEnumerableUnicode$fEnumerableDouble$fEnumerableFloat$fEnumerableChar$fEnumerableInt64$fEnumerableInt32$fEnumerableInt16$fEnumerableInt8$fEnumerableInt$fEnumerableWord64$fEnumerableWord32$fEnumerableWord16$fEnumerableWord8$fEnumerableWord$fEnumerableInteger$fEnumerableOrdering$fEnumerableMaybe$fEnumerableList$fEnumerableEither$fEnumerableBool$fEnumerable(,,,,)$fEnumerable(,,,)$fEnumerable(,,)$fEnumerable(,)$fEnumerable()$fEnumerableNat$fEnumerableRatio$fInfiniteInteger$fCoEnumerableList$fCoEnumerableBool$fEnumerableFUNValues runValuesvaluesvalues' allValues $fSizedValues$fAlternativeValues$fApplicativeValues$fFunctorValues$fSizedMaxSize$fAlternativeMaxSize$fApplicativeMaxSize$fFunctorMaxSize $fShowMaxSizeCountcount!!* $fSizedCount $fMonoidCount$fSemigroupCount$fAlternativeCount$fApplicativeCount$fFunctorCount $fShowCount instanceFortemplate-haskellLanguage.Haskell.TH.SyntaxForeignImportFExportFUnliftedTypeForallT ForallVisTAppTAppKindTSigTVarTConT PromotedTInfixTUInfixTPromotedInfixTPromotedUInfixTParensTTupleT UnboxedTupleT UnboxedSumTArrowT MulArrowT EqualityTListTPromotedTupleT PromotedNilT PromotedConsTStarT ConstraintTLitT WildCardTImplicitParamTDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackSourceStrictness SourceLazy SourceStrictNoSourceStrictnessSourceUnpackedness SourceUnpackSourceNoUnpackNoSourceUnpackednessFixityConNormalCRecCInfixCForallCGadtCRecGadtCQStrictghc-boot-th-9.6.3GHC.LanguageExtensions.Type ExtensionCppOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestrictionMonoLocalBindsDeepSubsumptionRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QualifiedDo QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSumsUnliftedNewtypesUnliftedDatatypes BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCardsNamedFieldPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseBlockArgumentsRebindableSyntaxConstraintKinds PolyKinds DataKindsTypeData InstanceSigs ApplicativeDo LinearTypesStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategies DerivingViaTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsHexFloatLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplications StrictDataEmptyDataDerivingNumericUnderscoresQuantifiedConstraints StarIsTypeImportQualifiedPostCUSKsStandaloneKindSignaturesLexicalNegationFieldSelectorsOverloadedRecordDotOverloadedRecordUpdateQuotenewNameExpVarEConELitEAppEAppTypeEInfixEUInfixEParensELamELamCaseE LamCasesETupE UnboxedTupE UnboxedSumECondEMultiIfELetECaseEDoEMDoECompE ArithSeqEListESigERecConERecUpdEStaticE UnboundVarELabelEImplicitParamVarE GetFieldE ProjectionEMatchClause Language.Haskell.TH.Lib.InternalExpQPatLitPVarPTupP UnboxedTupP UnboxedSumPConPInfixPUInfixPParensPTildePBangPAsPWildPRecPListPSigPViewPStmtBindSLetSNoBindSParSRecSTypeQDecFunDValDDataDNewtypeD TypeDataDTySynDClassD InstanceDSigDKiSigDForeignDInfixDDefaultDPragmaD DataFamilyD DataInstD NewtypeInstD TySynInstDOpenTypeFamilyDClosedTypeFamilyD RoleAnnotDStandaloneDerivD DefaultSigDPatSynD PatSynSigDImplicitParamBindDBangType VarBangTypeFieldExpFieldPatNamePatQFunDepPred TyVarBndrUnitDecsQRuleBndrRuleVar TypedRuleVarTySynEqnRoleNominalRRepresentationalRPhantomRInferRInjectivityAnnKindOverlap Overlappable OverlappingOverlaps Incoherent DerivClause DerivStrategy StockStrategyAnyclassStrategyNewtypeStrategy ViaStrategy TyVarBndrSpecCode examineCodeInlineNoInline InlinableDocLoc ModuleDocDeclDocArgDocInstDoc AnnLookupAnnLookupModule AnnLookupNameTyLitNumTyLitStrTyLit CharTyLitFamilyResultSigNoSigKindSigTyVarSig TyVarBndrPlainTVKindedTV Specificity SpecifiedSpec InferredSpec PatSynArgs PrefixPatSyn InfixPatSyn RecordPatSyn PatSynDirUnidir ImplBidir ExplBidirBangCxt AnnTargetModuleAnnotationTypeAnnotationValueAnnotationPhases AllPhases FromPhase BeforePhase RuleMatchConLikeFunLikePragmaInlinePOpaqueP SpecialisePSpecialiseInstPRulePAnnPLineP CompletePSafetyUnsafeSafe InterruptibleCallconvCCallStdCallCApiPrim JavaScriptTypeFamilyHead PatSynTypeRangeFromR FromThenRFromToR FromThenToRGuardNormalGPatGBodyGuardedBNormalBLitCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimL StringPrimL BytesPrimL CharPrimLFixityDirectionInfixLInfixRInfixN InstanceDecAritySumAritySumAlt ParentName ModuleInfoInfoClassIClassOpITyConIFamilyI PrimTyConIDataConIPatSynIVarITyVarILoc loc_filename loc_package loc_module loc_startloc_end NameSpaceTExpunTypeLanguage.Haskell.TH.PprPprpprppr_listDerivStrategyQFamilyResultSigQ PatSynArgsQ PatSynDirQ TySynEqnQ RuleBndrQ FieldExpQVarStrictTypeQ StrictTypeQ VarBangTypeQ BangTypeQBangQSourceUnpackednessQSourceStrictnessQRangeQStmtQGuardQBodyQClauseQMatchQ DerivClauseQPredQCxtQTyLitQKindQConQDecQ FieldPatQInfoQCodeQTExpQ interruptiblerecover reportErrorrunIOmatchdyn thisModulemkName unTypeCodeunsafeCodeCoercecharLstringLintegerLintPrimL wordPrimL floatPrimL doublePrimL rationalL stringPrimL charPrimLlitPvarPtupP unboxedTupP unboxedSumPLanguage.Haskell.TH.LibconPinfixPtildePbangPasPwildPrecPlistPsigPviewPfieldPatclausevarEconElitEappEappTypeEinfixEinfixAppsectionLsectionRlamElamCaseE lamCasesEtupE unboxedTupE unboxedSumEcondEmultiIfEletEcaseEdoEcompEfromE fromThenEfromToE fromThenToElistEsigErecConErecUpdEstaticE unboundVarElabelEimplicitParamVarEmdoE getFieldE projectionEfieldExpguardedBnormalBnormalGEpatGEbindSletSnoBindSparSrecSfunDvalDdataDnewtypeDtySynDclassDinstanceWithOverlapDsigDforImpDpragInlD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD dataFamilyDopenTypeFamilyD dataInstD newtypeInstD tySynInstDclosedTypeFamilyDinfixLDinfixRDinfixND roleAnnotDstandaloneDerivWithStrategyD defaultSigDpatSynD patSynSigD pragCompleteDimplicitParamBindDkiSigDdefaultD typeDataDcxtnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrictnormalCrecCinfixCforallCgadtCrecGadtCbangbangType varBangTypeunidir implBidir explBidir prefixPatSyn infixPatSyn recordPatSynforallT forallVisTvarTconTtupleT unboxedTupleT unboxedSumTarrowTlistTappTappKindTsigT equalityTlitT promotedTpromotedTupleT promotedNilT promotedConsT wildCardTimplicitParamTinfixTnumTyLitstrTyLit charTyLitplainTVkindedTVnominalRrepresentationalRphantomRinferRstarK constraintKnoSigkindSigtyVarSiginjectivityAnncCallstdCallcApiprim javaScriptunsafesafefunDep mulArrowTtySynEqnruleVar typedRuleVar plainInvisTV kindedInvisTVvalueAnnotationtypeAnnotationmoduleAnnotation derivClause specifiedSpec inferredSpec stockStrategyanyclassStrategynewtypeStrategy viaStrategyrunQliftCode hoistCodebindCode bindCode_joinCodereport reportWarninglookupTypeNamelookupValueNamereify reifyFixity reifyTypenewDeclarationGroupreifyInstances reifyRolesreifyAnnotations reifyModulereifyConStrictness isInstancelocation isExtEnabled extsEnabledputDocgetDocnameBase nameModule namePackage nameSpace tupleDataName tupleTypeNameunboxedTupleDataNameunboxedTupleTypeNameunboxedSumDataNameunboxedSumTypeName maxPrecedence defaultFixitypprintpprExppprLitpprPat pprParendType bytesPrimLuInfixPparensPfromR fromThenRfromToR fromThenToRnormalGpatGparensEuInfixElam1E arithSeqEstringE instanceD pragLineDstandaloneDerivDuInfixTpromotedInfixTpromotedUInfixTparensTclassPequalPisStrict notStrictunpacked strictType varStrictTypevarKconKtupleKarrowKlistKappKappsE withDecDoc withDecsDocfunD_doc dataD_doc newtypeD_doc typeDataD_doc dataInstD_docnewtypeInstD_doc patSynD_docmkBytesGHC.Base Applicative<*>pure*>liftA2<* Alternativeempty<|>somemanyData.Functor.ConstConstgetConstControl.ApplicativeZipList getZipList WrappedArrow WrapArrow unwrapArrow WrappedMonad WrapMonad unwrapMonad Data.Functor<$><$<**>liftAliftA3optional Data.Foldableasum ghc-bignumGHC.Num.IntegerIntegerrat<->