OFQ8      !"#$%&'()*+,-./01234567 Safe-InferedA sharing monad . with a function that binds a tag to a value. A dynamic map with type safe  insertion and lookup. None89:;<=>?89:;<=>?89:;<=>? Safe-Infered@@@None 5A functional enumeration of type t is a partition of ; t 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, i should be less than card e p A self-optimising function. ;Increases the cost of all values in an enumeration by one. @A conventient combination of memoisation and guarded recursion. A *( corresponds to product (as with lists) Bmappend = union C@Only use fmap with bijective functions (e.g. data constructors)  ABCvDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    ABCNone >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 alwasy 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. Contains only ASCII characters Not injective Not injective  !"  !"  !" !" Safe-Infered#A type of natural numbers. &A type of non empty lists. #$%&'()#$%&'()&'()#$%#$%&'() Safe-Infered*AMainly 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. M The computation complexity after cardinalities are computed is a polynomial % of the size of the resulting value. +FAll values of the enumeration by increasing cost (which is the number N of constructors for most types). Also contains the cardinality of each list. ,A 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. -KA 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. .5A rather simple but general property testing driver. M The property is a (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. /ioAll = . values 0 ioBounded n = . (bounded n) 1GCompatability with QuickCheck. Distribution is uniform generator over 0 values bounded by the given size. Typical use:  sized uniform. 2 Compatability with SmallCheck. 3Non class version of +. 4Non class version of ,. 5Non class version of -. 6Non class version of 1. 7Non class version of 2. *+,-./01234567*+,-./01234567*+,-./01234567*+,-./01234567 Safe-Infered  !"*+-/01  !"*+-1/0      !"#$%&'()*++,--./0123456789:;<=>?@ABCDEFGHIJKLJKMJKNJKOJKPJKQJKRJKSJTUJTVJTWJTXJTYJTZJT[JT\JT]JT^JT_JT`JTaJTbJTcJTdJTeJTeJTfJTgJThJTiJTjJTkJTlJTmJTmJnoJpqJprJpsJptJpuJpvJpwJpwJpxJpyJpyJpzJp{Jp{Jp|Jp}Jp}Jp~JpJpJpJpJpJpJpJpJpJpJpJJJJJJJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJKJJKJKJKJKJtesting-feat-0.1Control.Monad.TagShareTest.Feat.EnumerateTest.Feat.ClassTest.Feat.ModifiersTest.Feat.AccessTest.Feat.Internals.DeriveTest.Feat.Internals.Tag Test.FeatSharingDynMapdynEmpty dynInsert dynLookup runSharingshareTagSource EnumeratecardselectoptimalIndexPartpaymemmempaytagtagShareoptimise ConstructorFreePairFreefree Enumerable enumerateshared optimisedfuncurrynullaryunaryconstsderiveEnumerableNatnatNonEmptynonEmpty mkNonEmptyindexvaluesstripedboundedioFeatioAll ioBoundeduniformtoSeries valuesWith stripedWith boundedWith uniformWith toSeriesWith instanceFormkInstanceType extractDatatvbNameconDataxtoTypetupsClass$fApplicativeEnumerate$fMonoidEnumerate$fFunctorEnumeratebaseData.Typeable.InternalTypeable Typeable1 Typeable2 Typeable3 Typeable4 Typeable5 Typeable6 Typeable7Control.Applicative ApplicativeoptionalliftA3liftA2liftA<**><**><*>puremanysome<|>empty AlternativegetConstConst unwrapMonad WrapMonad WrappedMonad unwrapArrow WrapArrow WrappedArrow getZipListZipList Data.Functor<$> Data.Monoid<>mconcatmappendmemptyMonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetFirstFirstgetLastLast Data.Typeablegcast2gcast1gcastmkTyCon typeRepKey TypeRepKey showsTypeReptypeOf6DefaulttypeOf5DefaulttypeOf4DefaulttypeOf3DefaulttypeOf2DefaulttypeOf1Default typeOfDefault tyConString typeRepArgs typeRepTyConmkTyCon3mkAppTy funResultTy splitTyConAppmkFunTy tyConName tyConModule tyConPackagetypeOf1typeOf2typeOf3typeOf4typeOf5typeOf6typeOf7cast mkTyConAppTypeRepTyContypeOfGHC.Base<$$fEnumerableChar$fEnumerableFloat$fEnumerableDouble$fEnumerableFreePair$fEnumerableInt64$fEnumerableInt32$fEnumerableInt16$fEnumerableInt8$fEnumerableInt$fEnumerableWord64$fEnumerableWord32$fEnumerableWord16$fEnumerableWord8$fEnumerableWord$fEnumerableInteger$fEnumerableNatural$fEnumerable[]$fEnumerableNat$fEnumerableNonEmpty