h&+k      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` Safe-Inferredabcdefghijklmnopqrstuvwxyz{|}~ Safe-Inferredf 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 invokation 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-Inferred6I size-based&Constructs all values of a given size.J size-based)Constructs all values up to a given size.FGHIJKIJKFGH Safe-Inferred6U 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.   !"#UVWXYUVWXY3Y4    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPPQRSTUVWXYZ[\]^^_`abcdefghijkijlijminoinpinqinrinsintinuinvinwinxinyinzin{in|in}in~ininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijinijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijinijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijinijijijininijijijijijijijijijijijijijijijijijijijijinijijijininininiiiiiiiiiiiiiiiiiiiiiiiiiiiiiininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininininiiiiiiiiijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijij)size-based-0.1.3.2-2zwOTi2OvW56Ahvymrlc9RControl.Enumerable Control.SizedControl.Enumerable.ValuesControl.Enumerable.CountControl.Enumerable.DerivebaseData.Typeable.InternalTypeable1dictionary-sharing-0.1.0.0-9e33LQqYRYx1lJUntB1G4EData.ClassSharingshareShared ShareableSizedpaypairaconcatfinfinSizednaturalskbitsConstructorDeriv 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$fEnumerable[]$fEnumerableEither$fEnumerableBool$fEnumerable(,,,,)$fEnumerable(,,,)$fEnumerable(,,)$fEnumerable(,)$fEnumerable()$fEnumerableNat$fEnumerableRatio$fInfiniteInteger$fCoEnumerable[]$fCoEnumerableBool$fEnumerableFUNValues runValuesvaluesvalues' allValues $fSizedValues$fAlternativeValues$fApplicativeValues$fFunctorValues$fSizedMaxSize$fAlternativeMaxSize$fApplicativeMaxSize$fFunctorMaxSize $fShowMaxSizeCountcount!!* $fSizedCount $fMonoidCount$fSemigroupCount$fAlternativeCount$fApplicativeCount$fFunctorCount $fShowCounttemplate-haskellLanguage.Haskell.TH.SyntaxmkName unTypeCodeunsafeCodeCoerce Language.Haskell.TH.Lib.InternalcharLstringLintegerLintPrimL wordPrimL floatPrimL doublePrimL rationalL stringPrimL charPrimLlitPvarPtupP unboxedTupP unboxedSumPinfixPtildePbangPasPwildPrecPlistPsigPviewPfieldPatmatchclausevarEconElitEappEappTypeEinfixEinfixAppsectionLsectionRlamElamCaseE unboxedSumEcondEmultiIfEletEcaseEcompEfromE fromThenEfromToE fromThenToElistEsigErecConErecUpdEstaticE unboundVarElabelEimplicitParamVarE getFieldE projectionEfieldExpguardedBnormalBnormalGEpatGEbindSletSnoBindSparSrecSfunDvalDinstanceWithOverlapDsigDforImpDpragInlD pragSpecD pragSpecInlD pragSpecInstDpragAnnD tySynInstDinfixLDinfixRDinfixND roleAnnotD defaultSigDpatSynD patSynSigD pragCompleteDimplicitParamBindDkiSigDcxtnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrictnormalCrecCinfixCgadtCrecGadtCbangbangType varBangTypeunidir implBidir explBidir prefixPatSyn infixPatSyn recordPatSyn forallVisTvarTconTtupleT unboxedTupleT unboxedSumTarrowTlistTappTappKindT equalityTlitT promotedTpromotedTupleT promotedNilT promotedConsT wildCardTimplicitParamTinfixTnumTyLitstrTyLit charTyLitnominalRrepresentationalRphantomRinferRinjectivityAnncCallstdCallcApiprim javaScriptunsafesafe interruptiblefunDep mulArrowTruleVar typedRuleVar plainInvisTV kindedInvisTVvalueAnnotationtypeAnnotationmoduleAnnotation specifiedSpec inferredSpecQuotenewNameExpVarE UnboxedTupE UnboxedSumE UnboundVarEUInfixETupEStaticESigERecUpdERecConE ProjectionEParensEMultiIfEMDoELitEListELetELamELamCaseELabelEInfixEImplicitParamVarE GetFieldEDoECondEConECompECaseE ArithSeqEAppEAppTypeEMatchClauseQExpQPatWildPViewPVarP UnboxedTupP UnboxedSumPUInfixPTupPTildePSigPRecPParensPLitPListPInfixPConPAsPBangPStmtRecSParSNoBindSBindSLetSConRecGadtCRecCNormalCInfixCForallCGadtCTypeQType WildCardTVarT UnboxedTupleT UnboxedSumTUInfixTTupleTStarTSigTPromotedTupleT PromotedT PromotedNilT PromotedConsTParensT MulArrowTLitTListTInfixTImplicitParamT ForallVisTForallT EqualityT ConstraintTConTArrowTAppKindTAppTDecValD TySynInstDTySynDStandaloneDerivDSigD RoleAnnotDPragmaD PatSynSigDPatSynDOpenTypeFamilyD NewtypeInstDNewtypeDKiSigD InstanceDInfixDImplicitParamBindDFunDForeignD DefaultSigD DataInstD DataFamilyDDataDClassDClosedTypeFamilyDBangType VarBangTypeFieldExpFieldPatNamePatQFunDepPred TyVarBndrUnitDecsQRuleBndrRuleVar TypedRuleVarTySynEqnInjectivityAnnKindOverlap IncoherentOverlaps Overlappable Overlapping DerivClause DerivStrategy ViaStrategy StockStrategyAnyclassStrategyNewtypeStrategy TyVarBndrSpecCode examineCode stockStrategyanyclassStrategynewtypeStrategy viaStrategyghc-boot-th-9.2.4GHC.LanguageExtensions.Type Extension ViewPatternsUnliftedNewtypesUnliftedFFITypesUnliftedDatatypes UnicodeSyntaxUndecidableSuperClassesUndecidableInstances UnboxedTuples UnboxedSumsTypeSynonymInstances TypeOperators TypeInTypeTypeFamilyDependencies TypeFamiliesTypeApplications TupleSectionsTransformListCompTraditionalRecordSyntaxTemplateHaskellQuotesTemplateHaskell StrictDataStaticPointers StarIsTypeStandaloneKindSignaturesStandaloneDerivingScopedTypeVariablesRoleAnnotationsRelaxedPolyRec RelaxedLayout RecursiveDoRecordWildCards RecordPunsRebindableSyntax RankNTypes QuasiQuotesQuantifiedConstraints QualifiedDoPostfixOperators PolyKindsPatternSynonyms PatternGuardsPartialTypeSignaturesParallelListCompParallelArraysPackageImportsOverloadedStringsOverloadedRecordUpdateOverloadedRecordDotOverloadedListsOverloadedLabelsOverlappingInstancesNumericUnderscores NumDecimalsNullaryTypeClassesNondecreasingIndentationNegativeLiteralsNamedWildCardsNPlusKPatterns MultiWayIfMultiParamTypeClassesMonomorphismRestrictionMonoLocalBindsMonadComprehensions MagicHash LinearTypesLiberalTypeSynonymsLexicalNegation LambdaCaseKindSignatures JavaScriptFFIInterruptibleFFI InstanceSigsIncoherentInstancesImpredicativeTypesImportQualifiedPostImplicitPreludeImplicitParamsHexFloatLiteralsGeneralizedNewtypeDerivingGHCForeignImportPrimGADTs GADTSyntaxFunctionalDependenciesForeignFunctionInterfaceFlexibleInstancesFlexibleContextsFieldSelectorsExtendedDefaultRulesExplicitNamespacesExplicitForAllExistentialQuantificationEmptyDataDerivingEmptyDataDecls EmptyCaseDuplicateRecordFieldsDoAndIfThenElseDisambiguateRecordFields DerivingViaDerivingStrategiesDeriveTraversable DeriveLift DeriveGeneric DeriveFunctorDeriveFoldableDeriveDataTypeableDeriveAnyClassDefaultSignaturesDeepSubsumptionDatatypeContexts DataKindsCppConstraintKindsConstrainedClassMethodsCUSKsCApiFFIBlockArgumentsBinaryLiterals BangPatternsAutoDeriveTypeableArrows ApplicativeDo!AlternativeLayoutRuleTransitionalAlternativeLayoutRuleStrictAllowAmbiguousTypesLanguage.Haskell.TH.Lib unboxedTupEtyVarSigtySynEqntySynDtupEstarKstandaloneDerivWithStrategyDsigT pragRuleDplainTVopenTypeFamilyDnoSig newtypeInstDnewtypeDmkBytesmdoEkindedTVkindSigforallTforallCdoE derivClause dataInstD dataFamilyDdataD constraintKconPclosedTypeFamilyDclassDVarStrictTypeQ VarBangTypeQ TySynEqnQTyLitQTExpQ StrictTypeQStmtQSourceUnpackednessQSourceStrictnessQ RuleBndrQRangeQPredQ PatSynDirQ PatSynArgsQMatchQKindQInfoQGuardQ FieldPatQ FieldExpQFamilyResultSigQDerivStrategyQ DerivClauseQDecQCxtQConQCodeQClauseQBodyQ BangTypeQBangQ withDecsDoc withDecDoc varStrictTypevarKunpackeduInfixTuInfixPuInfixEtupleK thisModulestringE strictTypestandaloneDerivD pragLineD patSynD_docpatGparensTparensPparensE notStrictnormalGnewtypeInstD_doc newtypeD_doclistKlam1EisStrict instanceDfunD_docfromToR fromThenToR fromThenRfromRequalPdyn dataInstD_doc dataD_docconKclassP bytesPrimLarrowK arithSeqEappsEappKLanguage.Haskell.TH.PprPprpprppr_listpprintpprPat pprParendTypepprLitpprExpUnliftedTypeFamilyHead TyVarBndrKindedTVPlainTVTyLitStrTyLit CharTyLitNumTyLitTExpunTypeSumAritySumAlt Specificity InferredSpec SpecifiedSpecSourceUnpackednessNoSourceUnpackedness SourceUnpackSourceNoUnpackSourceStrictnessNoSourceStrictness SourceLazy SourceStrictSafetyUnsafe InterruptibleSafe RuleMatchConLikeFunLikeRoleRepresentationalRPhantomRInferRNominalRRangeFromToR FromThenToRFromR FromThenRPragma SpecialisePSpecialiseInstPRulePLinePInlinePAnnP CompletePPhases BeforePhase AllPhases FromPhase PatSynType PatSynDirUnidir ExplBidir ImplBidir PatSynArgs RecordPatSyn InfixPatSyn PrefixPatSyn ParentName NameSpace ModuleInfoLoc loc_start loc_package loc_module loc_filenameloc_endLit WordPrimL StringPrimLStringL RationalLIntegerLIntPrimL FloatPrimL DoublePrimL CharPrimL BytesPrimLCharL InstanceDecInline InlinableNoInlineInfoVarITyVarITyConI PrimTyConIPatSynIFamilyIDataConIClassIClassOpIGuardNormalGPatGForeignExportFImportFFixityDirectionInfixRInfixLInfixNFixityFamilyResultSigTyVarSigKindSigNoSigDocLoc ModuleDocInstDocArgDocDeclDocDecidedStrictness DecidedUnpack DecidedLazy DecidedStrictCxtCallconvStdCallPrim JavaScriptCApiCCallBodyGuardedBNormalBBangArity AnnTargetValueAnnotationModuleAnnotationTypeAnnotation AnnLookupAnnLookupModule AnnLookupNameunboxedTupleTypeNameunboxedTupleDataNameunboxedSumTypeNameunboxedSumDataName tupleTypeName tupleDataNamerunQrunIO reportWarning reportErrorreport reifyType reifyRoles reifyModulereifyInstances reifyFixityreifyConStrictnessreifyAnnotationsreifyrecoverputDoc nameSpace namePackage nameModulenameBase maxPrecedencelookupValueNamelookupTypeNamelocationliftCodejoinCode isInstance isExtEnabled hoistCodegetDoc extsEnabled defaultFixity bindCode_bindCode instanceForGHC.Base<$ ApplicativeliftA2<**><*>pureControl.ApplicativeZipList getZipList WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowoptionalData.Functor.ConstConstgetConst Data.Foldableasum Data.Functor<$> Alternativesomemany<|>emptyliftA3liftA<**> ghc-bignumGHC.Num.IntegerIntegerrat<->