category-extras-0.50.3: Various modules and constructs inspired by category theoryContentsIndex
Control.Monad.Ideal
Portabilityportable
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Contents
Ideal Monads
Coideal Comonads
Mutual recursion for (co)ideal (co)monad (co)products
Coideal Comonad Product
Ideal Monad Coproduct
Description
Synopsis
class Functor m => MonadIdeal m where
idealize :: m (Either a (m a)) -> m a
type Ideal = Ap Either
ideal :: Either a (f a) -> Ideal f a
class Functor w => ComonadCoideal w where
coidealize :: w a -> w (a, w a)
type Coideal = Ap (,)
coideal :: (a, f a) -> Coideal f a
newtype Mutual p m n a = Mutual {
runMutual :: m (p a (Mutual p n m a))
}
type :* m n = Mutual' (,) m n
type :+ m n = Mutual' Either m n
Ideal Monads
class Functor m => MonadIdeal m where
Methods
idealize :: m (Either a (m a)) -> m a
type Ideal = Ap Either
ideal :: Either a (f a) -> Ideal f a
Coideal Comonads
class Functor w => ComonadCoideal w where
Methods
coidealize :: w a -> w (a, w a)
type Coideal = Ap (,)
coideal :: (a, f a) -> Coideal f a
Mutual recursion for (co)ideal (co)monad (co)products
newtype Mutual p m n a
Constructors
Mutual
runMutual :: m (p a (Mutual p n m a))
show/hide Instances
(Bifunctor p Hask Hask Hask, Functor m, Functor n) => Functor (Mutual p m n)
Coideal Comonad Product
type :* m n = Mutual' (,) m n
Ideal Monad Coproduct
type :+ m n = Mutual' Either m n
Produced by Haddock version 2.1.0