úÎ5?1h       non-portable experimentalsjoerd@w3future.comNone0A variant of Test.QuickCheck.Gen, with failure 3 and a count of the number of recursive positions. /Return a generator of values of a given depth.  Returns  1 if there are no values of that depth or deeper.  The depth is the number of   calls.  flips the '( |)' operator. 3Unfolders provide a way to unfold data structures. 6 The methods have default implementations in terms of !,  but you can implement  & to act on recursive positions of the C data structure, or simply to provide a faster implementation than ". (Choose one of the values from the list. Given a number n, return a number between '0' and 'n - 1'. If an unfolder is monadic,   can be implemented in terms of  . 4If a datatype is bounded and enumerable, we can use   to generate a value. #4Limit the depth of the generated data structure by ? dividing the given size by the number of recursive positions. $-Choose between values of a given depth only. %Choose randomly. &Derived instance. 'Derived instance. (Derived instance. )Derived instance. *Derived instance. +Derived instance. ,Derived instance. -Derived instance. .Derived instance. /Derived instance. 0Derived instance. 1Derived instance. 2#Reverse the list passed to choose. 3Always choose the first item. 4Don't choose but return all items. 5Derived instance. 6Derived instance. 0 #789$:;<%=>&'()*+,-./012?3456   '  #789$:;<%=>&'()*+,-./012?3456 non-portable experimentalsjoerd@w3future.com Safe-Infered &Data structures that can be unfolded. For example, given a data type  9 data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a) a suitable instance would be   instance Unfoldable Tree where  unfold fa = choose  [ pure Empty  , Leaf <$> fa / , Node <$> unfold fa <*> fa <*> unfold fa  ] )i.e. it follows closely the instance for  Traversable-, but instead of matching on an input value,  we   from a list of all cases. aGiven a way to generate elements, return a way to generate structures containing those elements. #Unfold the structure, always using () as elements. ?Breadth-first unfold, which orders the result by the number of   calls. 1Unfold the structure breadth-first, always using () as elements. unfoldrD builds a data structure from a seed value. It can be specified as: 1 unfoldr f z == fromList (Data.List.unfoldr f z) 1Create a data structure using the list as input. P This can fail because there might not be a data structure with the same number = of element positions as the number of elements in the list. %Always choose the first constructor. $Always choose the last constructor. %Generate all the values depth first. 'Generate all the values breadth first. =Generate a random value, can be used as default instance for @. EProvides a QuickCheck generator, can be used as default instance for A. BCDEFGHIJ  BCDEFGHIJK      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQunfoldable-0.5.0 Data.UnfolderData.UnfoldableArbBFSgetBFSRandom getRandomDualAgetDualAUnfolderchoose chooseIntchooseMonadDefault boundedEnumrunBFSpackBFSarbUnit Unfoldableunfoldunfold_unfoldBF unfoldBF_unfoldrfromListleftMost rightMost allDepthFirstallBreadthFirst randomDefaultarbitraryDefaultbase Data.MaybeNothingControl.Applicative Alternative Data.Foldableasum $fUnfolderArb $fUnfolderBFS$fUnfolderRandom$fUnfolderWriterT$fUnfolderReaderT$fUnfolderStateT$fUnfolderRWST$fUnfolderMaybeT$fUnfolderListT$fUnfolderErrorT$fUnfolderLift$fUnfolderBackwards$fUnfolderReverse$fUnfolderCompose$fUnfolderProduct$fUnfolderDualA$fUnfolderMaybe $fUnfolder[]$fUnfolderWrappedArrow$fUnfolderWrappedMonad$fAlternativeArb$fApplicativeArb $fFunctorArb$fAlternativeBFS$fApplicativeBFS $fFunctorBFS$fMonadPlusRandom$fAlternativeRandom$fAlternativeDualArandom-1.0.1.1 System.RandomQuickCheck-2.4.2Test.QuickCheck.Arbitrary Arbitrary$fUnfoldableReverse$fUnfoldableCompose$fUnfoldableProduct$fUnfoldableConstant$fUnfoldableIdentity$fUnfoldable(,)$fUnfoldableEither$fUnfoldableMaybe$fUnfoldable[]