heftia-0.1.0.0: Higher-order version of Freer.
Copyright(c) 2023 Yamada Ryo
LicenseMPL-2.0 (see the file LICENSE)
Maintainerymdfield@outlook.jp
Stabilityexperimental
Portabilityportable
Safe HaskellSafe-Inferred
LanguageGHC2021

Control.Monad.Trans.Freer.Tree

Description

A tree-structured encoded Freer transformer.

Synopsis

Documentation

newtype FreerTreeT f m a Source #

A tree-structured encoded Freer transformer.

Constructors

FreerTreeT 

Fields

Instances

Instances details
MonadBase b m => MonadBase b (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

liftBase :: b α -> FreerTreeT f m α #

MonadTrans (FreerTreeT f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

lift :: Monad m => m a -> FreerTreeT f m a #

MonadFail m => MonadFail (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fail :: String -> FreerTreeT f m a #

MonadIO m => MonadIO (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

liftIO :: IO a -> FreerTreeT f m a #

(Foldable m, Foldable f) => Foldable (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fold :: Monoid m0 => FreerTreeT f m m0 -> m0 #

foldMap :: Monoid m0 => (a -> m0) -> FreerTreeT f m a -> m0 #

foldMap' :: Monoid m0 => (a -> m0) -> FreerTreeT f m a -> m0 #

foldr :: (a -> b -> b) -> b -> FreerTreeT f m a -> b #

foldr' :: (a -> b -> b) -> b -> FreerTreeT f m a -> b #

foldl :: (b -> a -> b) -> b -> FreerTreeT f m a -> b #

foldl' :: (b -> a -> b) -> b -> FreerTreeT f m a -> b #

foldr1 :: (a -> a -> a) -> FreerTreeT f m a -> a #

foldl1 :: (a -> a -> a) -> FreerTreeT f m a -> a #

toList :: FreerTreeT f m a -> [a] #

null :: FreerTreeT f m a -> Bool #

length :: FreerTreeT f m a -> Int #

elem :: Eq a => a -> FreerTreeT f m a -> Bool #

maximum :: Ord a => FreerTreeT f m a -> a #

minimum :: Ord a => FreerTreeT f m a -> a #

sum :: Num a => FreerTreeT f m a -> a #

product :: Num a => FreerTreeT f m a -> a #

(Monad m, Traversable m, Traversable f) => Traversable (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

traverse :: Applicative f0 => (a -> f0 b) -> FreerTreeT f m a -> f0 (FreerTreeT f m b) #

sequenceA :: Applicative f0 => FreerTreeT f m (f0 a) -> f0 (FreerTreeT f m a) #

mapM :: Monad m0 => (a -> m0 b) -> FreerTreeT f m a -> m0 (FreerTreeT f m b) #

sequence :: Monad m0 => FreerTreeT f m (m0 a) -> m0 (FreerTreeT f m a) #

MonadPlus m => Alternative (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

empty :: FreerTreeT f m a #

(<|>) :: FreerTreeT f m a -> FreerTreeT f m a -> FreerTreeT f m a #

some :: FreerTreeT f m a -> FreerTreeT f m [a] #

many :: FreerTreeT f m a -> FreerTreeT f m [a] #

Monad m => Applicative (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

pure :: a -> FreerTreeT f m a #

(<*>) :: FreerTreeT f m (a -> b) -> FreerTreeT f m a -> FreerTreeT f m b #

liftA2 :: (a -> b -> c) -> FreerTreeT f m a -> FreerTreeT f m b -> FreerTreeT f m c #

(*>) :: FreerTreeT f m a -> FreerTreeT f m b -> FreerTreeT f m b #

(<*) :: FreerTreeT f m a -> FreerTreeT f m b -> FreerTreeT f m a #

Functor m => Functor (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fmap :: (a -> b) -> FreerTreeT f m a -> FreerTreeT f m b #

(<$) :: a -> FreerTreeT f m b -> FreerTreeT f m a #

Monad m => Monad (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

(>>=) :: FreerTreeT f m a -> (a -> FreerTreeT f m b) -> FreerTreeT f m b #

(>>) :: FreerTreeT f m a -> FreerTreeT f m b -> FreerTreeT f m b #

return :: a -> FreerTreeT f m a #

MonadPlus m => MonadPlus (FreerTreeT f m) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

mzero :: FreerTreeT f m a #

mplus :: FreerTreeT f m a -> FreerTreeT f m a -> FreerTreeT f m a #

(Read1 f, Read1 m, Read a) => Read (FreerTreeT f m a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

(Functor f, Show1 f, Show1 m, Show a) => Show (FreerTreeT f m a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

showsPrec :: Int -> FreerTreeT f m a -> ShowS #

show :: FreerTreeT f m a -> String #

showList :: [FreerTreeT f m a] -> ShowS #

(Eq1 f, Eq1 m, Eq a) => Eq (FreerTreeT f m a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

(==) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

(/=) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

(Ord1 f, Ord1 m, Ord a) => Ord (FreerTreeT f m a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

compare :: FreerTreeT f m a -> FreerTreeT f m a -> Ordering #

(<) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

(<=) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

(>) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

(>=) :: FreerTreeT f m a -> FreerTreeT f m a -> Bool #

max :: FreerTreeT f m a -> FreerTreeT f m a -> FreerTreeT f m a #

min :: FreerTreeT f m a -> FreerTreeT f m a -> FreerTreeT f m a #

newtype FreerTreeMonad m f a Source #

Constructors

FreerTreeMonad 

Fields

Instances

Instances details
Freer Monad FreerTree Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

liftIns :: forall ins (a :: k). ins a -> FreerTree ins a Source #

interpretF :: forall m (ins :: k -> Type) (a :: k). Monad m => (ins ~> m) -> FreerTree ins a -> m a Source #

retract :: forall m (a :: k). Monad m => FreerTree m a -> m a Source #

transformF :: forall (ins :: k -> Type) (ins' :: k -> Type) (a :: k). (ins ~> ins') -> FreerTree ins a -> FreerTree ins' a Source #

reinterpretF :: forall (ins :: k -> Type) (a :: k). (ins ~> FreerTree ins) -> FreerTree ins a -> FreerTree ins a Source #

MonadBase b m => MonadBase b (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

liftBase :: b α -> FreerTreeMonad m f α #

Monad m => MonadFree (Coyoneda f) (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

wrap :: Coyoneda f (FreerTreeMonad m f a) -> FreerTreeMonad m f a #

MonadFail m => MonadFail (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fail :: String -> FreerTreeMonad m f a #

MonadIO m => MonadIO (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

liftIO :: IO a -> FreerTreeMonad m f a #

(Foldable m, Foldable f) => Foldable (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fold :: Monoid m0 => FreerTreeMonad m f m0 -> m0 #

foldMap :: Monoid m0 => (a -> m0) -> FreerTreeMonad m f a -> m0 #

foldMap' :: Monoid m0 => (a -> m0) -> FreerTreeMonad m f a -> m0 #

foldr :: (a -> b -> b) -> b -> FreerTreeMonad m f a -> b #

foldr' :: (a -> b -> b) -> b -> FreerTreeMonad m f a -> b #

foldl :: (b -> a -> b) -> b -> FreerTreeMonad m f a -> b #

foldl' :: (b -> a -> b) -> b -> FreerTreeMonad m f a -> b #

foldr1 :: (a -> a -> a) -> FreerTreeMonad m f a -> a #

foldl1 :: (a -> a -> a) -> FreerTreeMonad m f a -> a #

toList :: FreerTreeMonad m f a -> [a] #

null :: FreerTreeMonad m f a -> Bool #

length :: FreerTreeMonad m f a -> Int #

elem :: Eq a => a -> FreerTreeMonad m f a -> Bool #

maximum :: Ord a => FreerTreeMonad m f a -> a #

minimum :: Ord a => FreerTreeMonad m f a -> a #

sum :: Num a => FreerTreeMonad m f a -> a #

product :: Num a => FreerTreeMonad m f a -> a #

(Monad m, Traversable m, Traversable f) => Traversable (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

traverse :: Applicative f0 => (a -> f0 b) -> FreerTreeMonad m f a -> f0 (FreerTreeMonad m f b) #

sequenceA :: Applicative f0 => FreerTreeMonad m f (f0 a) -> f0 (FreerTreeMonad m f a) #

mapM :: Monad m0 => (a -> m0 b) -> FreerTreeMonad m f a -> m0 (FreerTreeMonad m f b) #

sequence :: Monad m0 => FreerTreeMonad m f (m0 a) -> m0 (FreerTreeMonad m f a) #

MonadPlus m => Alternative (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

empty :: FreerTreeMonad m f a #

(<|>) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> FreerTreeMonad m f a #

some :: FreerTreeMonad m f a -> FreerTreeMonad m f [a] #

many :: FreerTreeMonad m f a -> FreerTreeMonad m f [a] #

Monad m => Applicative (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

pure :: a -> FreerTreeMonad m f a #

(<*>) :: FreerTreeMonad m f (a -> b) -> FreerTreeMonad m f a -> FreerTreeMonad m f b #

liftA2 :: (a -> b -> c) -> FreerTreeMonad m f a -> FreerTreeMonad m f b -> FreerTreeMonad m f c #

(*>) :: FreerTreeMonad m f a -> FreerTreeMonad m f b -> FreerTreeMonad m f b #

(<*) :: FreerTreeMonad m f a -> FreerTreeMonad m f b -> FreerTreeMonad m f a #

Functor m => Functor (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

fmap :: (a -> b) -> FreerTreeMonad m f a -> FreerTreeMonad m f b #

(<$) :: a -> FreerTreeMonad m f b -> FreerTreeMonad m f a #

Monad m => Monad (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

(>>=) :: FreerTreeMonad m f a -> (a -> FreerTreeMonad m f b) -> FreerTreeMonad m f b #

(>>) :: FreerTreeMonad m f a -> FreerTreeMonad m f b -> FreerTreeMonad m f b #

return :: a -> FreerTreeMonad m f a #

MonadPlus m => MonadPlus (FreerTreeMonad m f) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

mzero :: FreerTreeMonad m f a #

mplus :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> FreerTreeMonad m f a #

(Read1 f, Read1 m, Read a) => Read (FreerTreeMonad m f a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

(Functor f, Show1 f, Show1 m, Show a) => Show (FreerTreeMonad m f a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

showsPrec :: Int -> FreerTreeMonad m f a -> ShowS #

show :: FreerTreeMonad m f a -> String #

showList :: [FreerTreeMonad m f a] -> ShowS #

(Eq1 f, Eq1 m, Eq a) => Eq (FreerTreeMonad m f a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

(==) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

(/=) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

(Ord1 f, Ord1 m, Ord a) => Ord (FreerTreeMonad m f a) Source # 
Instance details

Defined in Control.Monad.Trans.Freer.Tree

Methods

compare :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Ordering #

(<) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

(<=) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

(>) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

(>=) :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> Bool #

max :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> FreerTreeMonad m f a #

min :: FreerTreeMonad m f a -> FreerTreeMonad m f a -> FreerTreeMonad m f a #

liftInsTree :: Monad m => ins a -> FreerTreeT ins m a Source #

interpretTTree :: Monad n => (m ~> n) -> (ins ~> n) -> FreerTreeT ins m a -> n a Source #