hedgehog-0.5.2: Hedgehog will eat all your bugs.

Safe HaskellNone
LanguageHaskell98

Hedgehog.Internal.Distributive

Documentation

class Distributive g where Source #

Minimal complete definition

distribute

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (g :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distribute one monad transformer over another.

Instances

Distributive MaybeT Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (MaybeT :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive Tree Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (Tree :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive GenT Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (GenT :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive TestT Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (TestT :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive PropertyT Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (PropertyT :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Monoid w => Distributive (WriterT w) Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (WriterT w :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive (ExceptT x) Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (ExceptT x :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

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

Distributive (ReaderT * r) Source # 

Associated Types

type Transformer (f :: (* -> *) -> * -> *) (ReaderT * r :: (* -> *) -> * -> *) (m :: * -> *) :: Constraint Source #

Methods

distribute :: Transformer f (ReaderT * r) m => ReaderT * r (f m) a -> f (ReaderT * r m) a Source #