hedgehog-0.6.1: Hedgehog will eat all your bugs.

Safe HaskellNone
LanguageHaskell98

Hedgehog.Internal.Tree

Synopsis

Documentation

newtype Tree m a Source #

An effectful tree, each node in the tree can have an effect before it is produced.

Constructors

Tree 

Fields

Instances
MMonad Tree Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

embed :: Monad n => (forall a. m a -> Tree n a) -> Tree m b -> Tree n b Source #

MonadTrans Tree Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

lift :: Monad m => m a -> Tree m a Source #

Distributive Tree Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Associated Types

type Transformer f Tree m :: Constraint Source #

Methods

distribute :: Transformer f Tree m => Tree (f m) a -> f (Tree m) a Source #

MonadWriter w m => MonadWriter w (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

writer :: (a, w) -> Tree m a Source #

tell :: w -> Tree m () Source #

listen :: Tree m a -> Tree m (a, w) Source #

pass :: Tree m (a, w -> w) -> Tree m a Source #

MonadState s m => MonadState s (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

get :: Tree m s Source #

put :: s -> Tree m () Source #

state :: (s -> (a, s)) -> Tree m a Source #

MonadReader r m => MonadReader r (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

ask :: Tree m r Source #

local :: (r -> r) -> Tree m a -> Tree m a Source #

reader :: (r -> a) -> Tree m a Source #

MonadError e m => MonadError e (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

throwError :: e -> Tree m a Source #

catchError :: Tree m a -> (e -> Tree m a) -> Tree m a Source #

MonadBase b m => MonadBase b (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

liftBase :: b α -> Tree m α

Monad m => Monad (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

(>>=) :: Tree m a -> (a -> Tree m b) -> Tree m b Source #

(>>) :: Tree m a -> Tree m b -> Tree m b Source #

return :: a -> Tree m a Source #

fail :: String -> Tree m a Source #

Functor m => Functor (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

fmap :: (a -> b) -> Tree m a -> Tree m b Source #

(<$) :: a -> Tree m b -> Tree m a Source #

Monad m => Applicative (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

pure :: a -> Tree m a Source #

(<*>) :: Tree m (a -> b) -> Tree m a -> Tree m b Source #

liftA2 :: (a -> b -> c) -> Tree m a -> Tree m b -> Tree m c Source #

(*>) :: Tree m a -> Tree m b -> Tree m b Source #

(<*) :: Tree m a -> Tree m b -> Tree m a Source #

Show1 m => Show1 (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Tree m a -> ShowS Source #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Tree m a] -> ShowS Source #

MonadIO m => MonadIO (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

liftIO :: IO a -> Tree m a Source #

MonadPlus m => Alternative (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

empty :: Tree m a Source #

(<|>) :: Tree m a -> Tree m a -> Tree m a Source #

some :: Tree m a -> Tree m [a] Source #

many :: Tree m a -> Tree m [a] Source #

MonadPlus m => MonadPlus (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

mzero :: Tree m a Source #

mplus :: Tree m a -> Tree m a -> Tree m a Source #

MonadCatch m => MonadCatch (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

catch :: Exception e => Tree m a -> (e -> Tree m a) -> Tree m a Source #

MonadThrow m => MonadThrow (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

throwM :: Exception e => e -> Tree m a Source #

PrimMonad m => PrimMonad (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Associated Types

type PrimState (Tree m) :: Type Source #

Methods

primitive :: (State# (PrimState (Tree m)) -> (#State# (PrimState (Tree m)), a#)) -> Tree m a Source #

MonadResource m => MonadResource (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

liftResourceT :: ResourceT IO a -> Tree m a Source #

MFunctor Tree Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

hoist :: Monad m => (forall a. m a -> n a) -> Tree m b -> Tree n b Source #

(Show1 m, Show a) => Show (Tree m a) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

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

show :: Tree m a -> String Source #

showList :: [Tree m a] -> ShowS Source #

type Transformer f Tree m Source # 
Instance details

Defined in Hedgehog.Internal.Tree

type Transformer f Tree m = (Monad m, Monad (f m), Monad (Tree m), Monad (f (Tree m)), MonadTrans f, MFunctor f)
type PrimState (Tree m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

type PrimState (Tree m) = PrimState m

data Node m a Source #

A node in an effectful tree, as well as its unevaluated children.

Constructors

Node 

Fields

Instances
Monad m => Monad (Node m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

(>>=) :: Node m a -> (a -> Node m b) -> Node m b Source #

(>>) :: Node m a -> Node m b -> Node m b Source #

return :: a -> Node m a Source #

fail :: String -> Node m a Source #

Functor m => Functor (Node m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

fmap :: (a -> b) -> Node m a -> Node m b Source #

(<$) :: a -> Node m b -> Node m a Source #

Monad m => Applicative (Node m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

pure :: a -> Node m a Source #

(<*>) :: Node m (a -> b) -> Node m a -> Node m b Source #

liftA2 :: (a -> b -> c) -> Node m a -> Node m b -> Node m c Source #

(*>) :: Node m a -> Node m b -> Node m b Source #

(<*) :: Node m a -> Node m b -> Node m a Source #

Show1 m => Show1 (Node m) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> Node m a -> ShowS Source #

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [Node m a] -> ShowS Source #

MFunctor Node Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

hoist :: Monad m => (forall a. m a -> n a) -> Node m b -> Node n b Source #

(Show1 m, Show a) => Show (Node m a) Source # 
Instance details

Defined in Hedgehog.Internal.Tree

Methods

showsPrec :: Int -> Node m a -> ShowS Source #

show :: Node m a -> String Source #

showList :: [Node m a] -> ShowS Source #

fromNode :: Applicative m => Node m a -> Tree m a Source #

Create a Tree from a Node

unfold :: Monad m => (a -> [a]) -> a -> Tree m a Source #

Create a tree from a value and an unfolding function.

unfoldForest :: Monad m => (a -> [a]) -> a -> [Tree m a] Source #

Create a forest from a value and an unfolding function.

expand :: Monad m => (a -> [a]) -> Tree m a -> Tree m a Source #

Expand a tree using an unfolding function.

prune :: Monad m => Tree m a -> Tree m a Source #

Throw away a tree's children.

render :: Monad m => Tree m String -> m String Source #

Render a tree of strings, note that this forces all the delayed effects in the tree.