k@;a      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`NoneGabcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe(A 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).7Increases 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 numeric 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). oNon-negative integers. By default, the size of an integer is the number of digits in its binary representation.%        None9 Work in progress.A class of infinite precision integral types.  is the principal class member.;Used instead of enumerate when manually building instances.zGuarantees 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  coEnumerateN given an pattern matching function for a data type (see source for examples).#cDerive an instance of Enumberable with Template Haskell, with rules for some specific constructors(Not a proper injection)Not a proper injection*ASCII characters?The unit constructor is freeA       !"# !" #  None1<I&Constructs all values of a given size.J)Constructs all values up to a given size.FGHIJKIJKFGHFGHNone1>UJCounts the number of values of a all sizes. Usage: @global :: Count [Bool]X@Counts the number of values of a given size, 0 if out of bounds.F       !"#UVWXYUVWXYUVW3Y4    !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPPQRSTUVWXYZ[\]^^_`abcdefghijkijlimnimoimpimqimrimsimtimuimvimwimximyimzim{im|im}im~imimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimimim im im im im imimimimimimimimimimimimimimijijijijij ij!ij"ij#ij$ij%ij&ij'ij(ij)ij*ij+ij,ij-ij.ij/ij0ij1ij2ij3ij4ij5ij6ij7ij7ij8ij8ij9im:im;ij<ij=ij>ij?ij@ijAijBijCijDijEijFijGijHijIijJijKijLijMimNimOimPimQimRijSijTijUijVijWijXijYijZij[ij\ij]ij^ij_ij`ijaijbijcijdijeijfijgijhijiijjijkijlijmijnijoijpijqijrijsijtijuijvijwijxijyijzij{ij|ij}ij~ijijimimijijijimimimijijijimijijijimimimijijijijijijijijijijimijijijij     imimimimimimimimimimimimimimimimimim im!im"im#im$im%im&im'im(im)im*im+im,im-im.im/im0im1im2im3im4im5im6im7im8im9im:im;im<im=i>?i>@i>Ai>Bi>Ci>Di>Ei>FijGijHijIijJijKijLijMijNijOijPijQijRijSijTijUijVijWijXijYijZij[ij\ij]ij^ij_ij`ijaijbijcijdijeijfijgijgijhijiijjijkijlijmijnijoijpijqijrijsijtijuijvijwijwijxijyijzij{ij|ij}ij~ij~ijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijijij        )size-based-0.1.1.0-2LgVTzwGCKQIUcY8avWJusControl.Enumerable Control.SizedControl.Enumerable.ValuesControl.Enumerable.CountControl.Enumerable.DerivebaseData.Typeable.InternalTypeable1dictionary-sharing-0.1.0.0-Az68aWqD44KEzeE4hZn6NqData.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$fEnumerable(->)Values runValuesvaluesvalues' allValues $fSizedValues$fAlternativeValues$fApplicativeValues$fFunctorValues$fSizedMaxSize$fAlternativeMaxSize$fApplicativeMaxSize$fFunctorMaxSize $fShowMaxSizeCountcount!!* $fSizedCount $fMonoidCount$fSemigroupCount$fAlternativeCount$fApplicativeCount$fFunctorCount $fShowCounttemplate-haskellLanguage.Haskell.TH.SyntaxnewNamemkNameLanguage.Haskell.TH.LibcharLstringLintegerLintPrimL wordPrimL floatPrimL doublePrimL rationalL stringPrimL charPrimLlitPvarPtupP unboxedTupP unboxedSumPconPinfixPtildePbangPasPwildPrecPlistPsigPviewPfieldPatmatchclausevarEconElitEappEappTypeEinfixEinfixAppsectionLsectionRlamElamCaseEtupE unboxedTupE unboxedSumEcondEmultiIfEletEcaseEdoEcompEfromE fromThenEfromToE fromThenToElistEsigErecConErecUpdEstaticE unboundVarEfieldExpguardedBnormalBnormalGEpatGEbindSletSnoBindSparSfunDvalDdataDnewtypeDtySynDclassDinstanceWithOverlapDsigDforImpDpragInlD pragSpecD pragSpecInlD pragSpecInstD pragRuleDpragAnnD dataFamilyDopenTypeFamilyD dataInstD newtypeInstD tySynInstDclosedTypeFamilyDinfixLDinfixRDinfixND roleAnnotDstandaloneDerivWithStrategyD defaultSigDpatSynD patSynSigD pragCompleteDcxtnoSourceUnpackednesssourceNoUnpack sourceUnpacknoSourceStrictness sourceLazy sourceStrictnormalCrecCinfixCforallCgadtCrecGadtCbangbangType varBangTypeunidir implBidir explBidir prefixPatSyn infixPatSyn recordPatSynforallTvarTconTtupleT unboxedTupleT unboxedSumTarrowTlistTappTsigT equalityTlitT promotedTpromotedTupleT promotedNilT promotedConsT wildCardTnumTyLitstrTyLitplainTVkindedTVnominalRrepresentationalRphantomRinferRvarKconKtupleKarrowKlistKappKstarK constraintKnoSigkindSigtyVarSiginjectivityAnncCallstdCallcApiprim javaScriptunsafesafe interruptiblefunDeptypeFamdataFamtySynEqnruleVar typedRuleVarvalueAnnotationtypeAnnotationmoduleAnnotation derivClauseExpVarEConELitEAppEAppTypeEInfixEUInfixEParensELamELamCaseETupE UnboxedTupE UnboxedSumECondEMultiIfELetECaseEDoECompE ArithSeqEListESigERecConERecUpdEStaticE UnboundVarEMatchClauseQExpQDecQPatLitPVarPTupP UnboxedTupP UnboxedSumPConPInfixPUInfixPParensPTildePBangPAsPWildPRecPListPSigPViewPMatchQClauseQStmtQConQTypeQTypeForallTAppTSigTVarTConT PromotedTInfixTUInfixTParensTTupleT UnboxedTupleT UnboxedSumTArrowT EqualityTListTPromotedTupleT PromotedNilT PromotedConsTStarT ConstraintTLitT WildCardTDecFunDValDDataDNewtypeDTySynDClassD InstanceDSigDForeignDInfixDPragmaD DataFamilyD DataInstD NewtypeInstD TySynInstDOpenTypeFamilyDClosedTypeFamilyD RoleAnnotDStandaloneDerivD DefaultSigDPatSynD PatSynSigD BangTypeQ VarBangTypeQFieldExpFieldPatNamePatQ FieldPatQ FieldExpQFunDepPredPredQ TyVarBndrPlainTVKindedTVDecsQ RuleBndrQ TySynEqnQTExpunTypeInjectivityAnnKindOverlap Overlappable OverlappingOverlaps Incoherent DerivClauseQ DerivStrategy StockStrategyAnyclassStrategyNewtypeStrategyghc-boot-th-8.2.2GHC.LanguageExtensions.Type ExtensionStrictCppOverlappingInstancesUndecidableInstancesIncoherentInstancesUndecidableSuperClassesMonomorphismRestriction MonoPatBindsMonoLocalBindsRelaxedPolyRecExtendedDefaultRulesForeignFunctionInterfaceUnliftedFFITypesInterruptibleFFICApiFFIGHCForeignImportPrim JavaScriptFFIParallelArraysArrowsTemplateHaskellTemplateHaskellQuotes QuasiQuotesImplicitParamsImplicitPreludeScopedTypeVariablesAllowAmbiguousTypes UnboxedTuples UnboxedSums BangPatterns TypeFamiliesTypeFamilyDependencies TypeInTypeOverloadedStringsOverloadedLists NumDecimalsDisambiguateRecordFieldsRecordWildCards RecordPuns ViewPatternsGADTs GADTSyntaxNPlusKPatternsDoAndIfThenElseRebindableSyntaxConstraintKinds PolyKinds DataKinds InstanceSigs ApplicativeDoStandaloneDerivingDeriveDataTypeableAutoDeriveTypeable DeriveFunctorDeriveTraversableDeriveFoldable DeriveGenericDefaultSignaturesDeriveAnyClass DeriveLiftDerivingStrategiesTypeSynonymInstancesFlexibleContextsFlexibleInstancesConstrainedClassMethodsMultiParamTypeClassesNullaryTypeClassesFunctionalDependencies UnicodeSyntaxExistentialQuantification MagicHashEmptyDataDeclsKindSignaturesRoleAnnotationsParallelListCompTransformListCompMonadComprehensionsGeneralizedNewtypeDeriving RecursiveDoPostfixOperators TupleSections PatternGuardsLiberalTypeSynonyms RankNTypesImpredicativeTypes TypeOperatorsExplicitNamespacesPackageImportsExplicitForAllAlternativeLayoutRule!AlternativeLayoutRuleTransitionalDatatypeContextsNondecreasingIndentation RelaxedLayoutTraditionalRecordSyntax LambdaCase MultiWayIfBinaryLiteralsNegativeLiteralsDuplicateRecordFieldsOverloadedLabels EmptyCasePatternSynonymsPartialTypeSignaturesNamedWildCardsStaticPointersTypeApplications StrictDataMonadFailDesugaring thisModuleappsE varStrictType strictTypeunpacked notStrictisStrictequalPclassPparensTuInfixTinfixTstandaloneDerivDclosedTypeFamilyKindDclosedTypeFamilyNoKindD familyKindD familyNoKindD pragLineD instanceDstringE arithSeqElam1EuInfixEparensEdynpatGnormalG fromThenToRfromToR fromThenRfromRparensPuInfixPInfoQTExpQTyLitQCxtQBodyQGuardQRangeQSourceStrictnessQSourceUnpackednessQBangQ StrictTypeQVarStrictTypeQ PatSynDirQ PatSynArgsQLanguage.Haskell.TH.Ppr pprParendTypepprPatpprLitpprExppprintPprpprppr_list defaultFixity maxPrecedenceunboxedSumTypeNameunboxedSumDataNameunboxedTupleTypeNameunboxedTupleDataName tupleTypeName tupleDataName nameSpace namePackage nameModulenameBase extsEnabled isExtEnabledrunIOlocation isInstancereifyConStrictness reifyModulereifyAnnotations reifyRolesreifyInstances reifyFixityreifylookupValueNamelookupTypeNamerecover reportWarning reportErrorreportrunQ NameSpaceLoc loc_filename loc_package loc_module loc_startloc_endInfoClassIClassOpITyConIFamilyI PrimTyConIDataConIPatSynIVarITyVarI ModuleInfo ParentNameSumAltSumArityArityUnlifted InstanceDecFixityFixityDirectionInfixLInfixRInfixNLitCharLStringLIntegerL RationalLIntPrimL WordPrimL FloatPrimL DoublePrimL StringPrimL CharPrimLBodyGuardedBNormalBGuardNormalGPatGStmtBindSLetSNoBindSParSRangeFromR FromThenRFromToR FromThenToR DerivClause PatSynTypeTypeFamilyHeadTySynEqn FamFlavourTypeFamDataFamForeignImportFExportFCallconvCCallStdCallCApiPrim JavaScriptSafetyUnsafeSafe InterruptiblePragmaInlineP SpecialisePSpecialiseInstPRulePAnnPLineP CompletePInlineNoInline Inlinable RuleMatchConLikeFunLikePhases AllPhases FromPhase BeforePhaseRuleBndrRuleVar TypedRuleVar AnnTargetModuleAnnotationTypeAnnotationValueAnnotationCxtSourceUnpackedness SourceUnpackSourceNoUnpackNoSourceUnpackednessSourceStrictness SourceLazy SourceStrictNoSourceStrictnessDecidedStrictness DecidedLazy DecidedStrict DecidedUnpackConNormalCRecCInfixCForallCGadtCRecGadtCBang PatSynDirUnidir ImplBidir ExplBidir PatSynArgs PrefixPatSyn InfixPatSyn RecordPatSynFamilyResultSigNoSigKindSigTyVarSigTyLitNumTyLitStrTyLitRoleNominalRRepresentationalRPhantomRInferR AnnLookupAnnLookupModule AnnLookupName instanceForGHC.Base<$ Applicativepure<*>*>liftA2<*Control.Applicativeoptional WrappedMonad WrapMonad unwrapMonad WrappedArrow WrapArrow unwrapArrowZipList getZipListData.Functor.ConstConstgetConst Data.Functor<$>liftA3liftA<**> Alternativeempty<|>somemany integer-gmpGHC.Integer.TypeIntegerratMaxSize runMaxSize<->