im^SO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN  Safe-InferedA sharing monad . with a function that binds a tag to a value. A dynamic map with type safe  insertion and lookup.  Safe-Infered;A type of (infinite precision) non-zero integers such that  nonZero a /= 0 . 9A type of (infinite precision) natural numbers such that  nat a >= 0 . .A class of infinite precision integral types. O is the principal  class member.  P   PNoneQRSTUVWXQRSTUVWXQRSTUVWX  Safe-InferedYYYNone !A functional enumeration of type t is a partition of  t9 into finite numbered sets called Parts. The number that ; identifies each part is called the cost of the values in  that part. *Computes the cardinality of a given part. %Selects a value from the enumeration  For  select e p i , the index i should be less than card e p 7A self-optimising function (mainly for internal use). Disjoint union The definition of pure for the applicative instance. ;Increases the cost of all values in an enumeration by one. ?A convenient combination of memoisation and guarded recursion. ZPure is  and [2 corresponds to cartesian product (as with lists) \The ] is (disjoint)  ^@Only use fmap with bijective functions (e.g. data constructors) Z\^x_`abcdefghijklmn[opqrstuvwxyz{|}~]Z\^None!>A free pair constructor. The cost of constructing a free pair 6 is equal to the sum of the costs of its components. $)A class of functionally enumerable types %FThis is the interface for defining an instance. Memoisation needs to  be ensured e.g. using * but sharing is handled automatically by  the default implementation of &. &7Version of enumerate that ensures it is shared between 6 all accessing functions. Should always be used when  combining enumerations. 0 Should typically be left to default behaviour. '/An optimised version of enumerate. Used by all ; library functions that access enumerated values (but not @ by combining functions). Library functions should ensure that   optimised is not reevaluated. (JUncurry a function (typically a constructor) to a function on free pairs. )!For nullary constructors such as True and []. *'For any non-nullary constructor. Apply ( until the type of F the result is unary (i.e. n-1 times where n is the number of fields  of the constructor). +IProduces the enumeration of a type given the enumerators for each of its  constructors. The result of * should typically not be used F directly in an instance even if it only has one constructor. So you ) should apply consts even in that case. ,9Derive an instance of Enumberable with Template Haskell. 0?Derive an instance of Enumberable with Template Haskell, with & rules for some specific constructors Contains only ASCII characters Not injective Not injective Not injective % !"#$%&'()*+,-./0 !"#$%&'()*+,-./0$%& )*(+'!"#,0-./! !"#$%&'()*+,-./0 Safe-Infered1Printable ASCII characters 4Any unicode character. 7A type of non empty lists. ;'Smart constructor for unicode strings. <.Smart constructor for printable ASCII strings 123456789:;< 123456789:;<789:  456;123< 123456789:;< Safe-Infered@1This function is best described with an example:   + let e1 = override $ addOverride (unary 3) noOverride :: Enumerate T e1 enumerates values of type T' where all characters (accessed using  the  Enumerable instance for Char*) are printable. Sometimes this can save  you from placing lots of 3! modifiers in your instances or ) newtypes in your data type definitions. LThis works for any type (not just characters) as long as the instance does ( not override the default definition of & so it does not use  B (no instance in the library does this).This function should not H be used for defining instances (doing so might increase memory usage). =>?@=>?@=>?@=>?@ Safe-InferedAAMainly as a proof of concept we can use the isomorphism between  natural numbers and  (Part,Index) pairs to index into a type. % May not terminate for finite types. F Might be slow the first time it is used with a specific enumeration . because cardinalities need to be calculated. Q The computational complexity (after cardinalities are computed) is a polynomial % in the size of the resulting value. BFAll values of the enumeration by increasing cost (which is the number N of constructors for most types). Also contains the cardinality of each list. CA generalisation of values) that enumerates every nth value of the * enumeration from a given starting point.  As a special case values = striped 0 0 1. DKA version of vales that has a limited number of values in each inner list. L If the list corresponds to a Part which is larger than the bound it evenly = intersperses the values across the enumeration of the Part. E5A rather simple but general property testing driver. N The property is an (funcurried) IO function that both tests and reports the D error. The driver goes on forever or until the list is exhausted, * reporting the coverage and the number of  tests before each new part. F Defined as ioAll = E B  G Defined as ioBounded n = E (D n) HGCompatibility with QuickCheck. Distribution is uniform generator over 0 values bounded by the given size. Typical use:  sized uniform. I Compatibility with SmallCheck. JNon class version of B. KNon class version of C. LNon class version of D. MNon class version of H. NNon class version of I. ABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMNABCDEFGHIJKLMN  Safe-Infered!"#$%&'()*+,ABDEFGH$%&)*(+,!"#'ABDHEFG      !"#$%&'()*+,-./01234567899:;;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ `abcdebfghbijbikbilbimbinbiobipbiqbcrbcsbctbcubcvbcwbcxbcybczbc{bc|bc}bc~bcbcbcbcbcbcbcbcbcbcbcbcbcbbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbfbbbbbbbibibibibibibibibibibibibibibibibibibibibibibibibibibbibibibibtesting-feat-0.2Control.Monad.TagShareTest.Feat.ModifiersTest.Feat.EnumerateTest.Feat.ClassTest.Feat.Class.OverrideTest.Feat.AccessTest.Feat.Internals.NewtypesTest.Feat.Internals.DeriveTest.Feat.Internals.Tag Test.FeatSharingDynMapdynEmpty dynInsert dynLookup runSharingshareNonZerononZeroNatnatInfiniteTagSource EnumeratecardselectoptimalIndexPartunion singletonpaymemmempaytagtagShareoptimiseConstructorDeriv ConstructorFreePairFreefree Enumerable enumerateshared optimisedfuncurrynullaryunaryconstsderiveEnumerabledAll dExcludingdExceptderiveEnumerable' Printable printableUnicodeunicodeNonEmptynonEmpty mkNonEmptyunicodes printablesOverride noOverride addOverrideoverrideindexvaluesstripedboundedioFeatioAll ioBoundeduniformtoSeries valuesWith stripedWith boundedWith uniformWith toSeriesWith integer-gmpGHC.Integer.TypeInteger$fInfiniteInteger instanceFormkInstanceType extractDatatvbNameconDataxtoTypetupsClass$fApplicativeEnumeratebaseControl.Applicative<*>$fMonoidEnumerate Data.Monoidmappend$fFunctorEnumerateData.Typeable.InternalTypeable Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7 ApplicativeoptionalliftA3liftA2liftA<**><**>puremanysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$><>mconcatmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLast Data.Typeablegcast2gcast1gcastmkTyCon typeRepKey TypeRepKey showsTypeReptypeOf6DefaulttypeOf5DefaulttypeOf4DefaulttypeOf3DefaulttypeOf2DefaulttypeOf1Default typeOfDefault tyConString typeRepArgs typeRepTyConmkTyCon3mkAppTy funResultTy splitTyConAppmkFunTy tyConName tyConModule tyConPackagetypeOf1typeOf2typeOf3typeOf4typeOf5typeOf6typeOf7cast mkTyConAppTypeRepTyContypeOfGHC.Base<$$fEnumerableChar$fEnumerableRatio$fEnumerableFloat$fEnumerableDouble$fEnumerableFreePair$fEnumerableInt64$fEnumerableInt32$fEnumerableInt16$fEnumerableInt8$fEnumerableInt$fEnumerableWord64$fEnumerableWord32$fEnumerableWord16$fEnumerableWord8$fEnumerableWord$fEnumerableNonZero$fEnumerableInteger$fEnumerableNat$fEnumerable[]$fEnumerablePrintable$fEnumerableUnicode$fEnumerableNonEmpty