axiomatic-classes-0.1.0.0: Specify axioms for type classes and quickCheck all available instances

Safe HaskellNone
LanguageHaskell2010

Test.QuickCheck.RandomTree

Documentation

data Tree a Source #

Constructors

Tree a [Tree a] 

Instances

Eq a => Eq (Tree a) Source # 

Methods

(==) :: Tree a -> Tree a -> Bool #

(/=) :: Tree a -> Tree a -> Bool #

Show a => Show (Tree a) Source # 

Methods

showsPrec :: Int -> Tree a -> ShowS #

show :: Tree a -> String #

showList :: [Tree a] -> ShowS #

Arbitrary a => Arbitrary (Tree a) Source # 

Methods

arbitrary :: Gen (Tree a) #

shrink :: Tree a -> [Tree a] #

type Rec a = RecT Gen a Source #

newtype RecT m a Source #

Constructors

RecT 

Fields

Instances

MonadTrans RecT Source # 

Methods

lift :: Monad m => m a -> RecT m a #

Monad m => Monad (RecT m) Source # 

Methods

(>>=) :: RecT m a -> (a -> RecT m b) -> RecT m b #

(>>) :: RecT m a -> RecT m b -> RecT m b #

return :: a -> RecT m a #

fail :: String -> RecT m a #

Functor m => Functor (RecT m) Source # 

Methods

fmap :: (a -> b) -> RecT m a -> RecT m b #

(<$) :: a -> RecT m b -> RecT m a #

(Functor m, Monad m) => Applicative (RecT m) Source # 

Methods

pure :: a -> RecT m a #

(<*>) :: RecT m (a -> b) -> RecT m a -> RecT m b #

(*>) :: RecT m a -> RecT m b -> RecT m b #

(<*) :: RecT m a -> RecT m b -> RecT m a #

MonadGen m => MonadGen (RecT m) Source # 

Methods

liftGen :: Gen a -> RecT m a Source #

sized :: (Int -> RecT m a) -> RecT m a Source #

class Monad m => MonadGen m where Source #

Minimal complete definition

liftGen, sized

Methods

liftGen :: Gen a -> m a Source #

sized :: (Int -> m a) -> m a Source #

Instances

MonadGen Gen Source # 

Methods

liftGen :: Gen a -> Gen a Source #

sized :: (Int -> Gen a) -> Gen a Source #

MonadGen m => MonadGen (MaybeT m) Source # 

Methods

liftGen :: Gen a -> MaybeT m a Source #

sized :: (Int -> MaybeT m a) -> MaybeT m a Source #

MonadGen m => MonadGen (RecT m) Source # 

Methods

liftGen :: Gen a -> RecT m a Source #

sized :: (Int -> RecT m a) -> RecT m a Source #

MonadGen m => MonadGen (ReaderT * a m) Source # 

Methods

liftGen :: Gen a -> ReaderT * a m a Source #

sized :: (Int -> ReaderT * a m a) -> ReaderT * a m a Source #

elements :: MonadGen m => [a] -> m a Source #

recForM :: MonadGen m => [a] -> (a -> RecT m b) -> RecT m [b] Source #

recListFrom :: Int -> Rec a -> Rec [a] Source #

recListFromTo :: Int -> Int -> Rec a -> Rec [a] Source #

try :: Monad m => RecT m a -> RecT m (Maybe a) Source #

consume :: Monad m => RecT m a -> RecT m a Source #

choice :: MonadGen m => [RecT m a] -> RecT m a Source #

runRec :: MonadGen m => RecT m a -> m (Maybe a) Source #

size :: Tree a -> Int Source #

subtrees :: Tree t -> [Tree t] Source #

root :: Tree t -> t Source #

type NodeGen a b = b -> Int -> Gen (a, [b]) Source #

recursive_struct' :: NodeGen a b -> (a -> [c] -> c) -> b -> Gen c Source #

recursive_struct :: (Int -> Gen (a, Int)) -> (a -> [c] -> c) -> Gen c Source #

tree_from' :: NodeGen a b -> b -> Gen (Tree a) Source #

tree_from :: (Int -> Gen (a, Int)) -> Gen (Tree a) Source #

tree_from_aux :: NodeGen a b -> b -> Int -> Gen (Tree a) Source #

run_tests :: (PropName -> Property -> IO (a, Result)) -> IO ([a], Bool) Source #