objective-1.2: Composable objects

Copyright(c) Fumiaki Kinoshita 2015
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityprovisional
PortabilityGADTs, Rank2Types
Safe HaskellTrustworthy
LanguageHaskell2010

Control.Object.Mortal

Description

 
Synopsis

Documentation

newtype Mortal f g a Source #

A Mortal is an object that may die. A mortal yields a final result upon death. Mortal f g forms a Monad: return is a dead object and (>>=) prolongs the life of the left object.

Object f g ≡ Mortal f g Void

Constructors

Mortal 

Fields

Instances
MonadTrans (Mortal f) Source # 
Instance details

Defined in Control.Object.Mortal

Methods

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

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

Defined in Control.Object.Mortal

Methods

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

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

return :: a -> Mortal f m a #

fail :: String -> Mortal f m a #

(Functor m, Monad m) => Functor (Mortal f m) Source # 
Instance details

Defined in Control.Object.Mortal

Methods

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

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

(Functor m, Monad m) => Applicative (Mortal f m) Source # 
Instance details

Defined in Control.Object.Mortal

Methods

pure :: a -> Mortal f m a #

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

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

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

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

mortal :: Monad m => (forall x. f x -> ExceptT a m (x, Mortal f m a)) -> Mortal f m a Source #

Construct a mortal in a Object construction manner.

mortal_ :: Object f (ExceptT () g) -> Mortal f g () Source #

Restricted Mortal constuctor which can be applied to transit, fromFoldable without ambiguousness.

runMortal :: Monad m => Mortal f m a -> f x -> ExceptT a m (x, Mortal f m a) Source #

Send a message to a mortal.

immortal :: (Functor m, Monad m) => Object f m -> Mortal f m x Source #

Turn an object into a mortal without death.

apprisesOf :: Monad m => WitherLike' (WriterT r m) s (Mortal f m b) -> f a -> (a -> r) -> (b -> r) -> StateT s m r Source #

Send a message to mortals through a filter.

apprises :: (Witherable t, Monad m, Applicative m, Monoid r) => f a -> (a -> r) -> (b -> r) -> StateT (t (Mortal f m b)) m r Source #

Send a message to mortals in a Witherable container.

apprises = apprisesOf wither

apprise :: (Witherable t, Monad m, Applicative m) => f a -> StateT (t (Mortal f m r)) m ([a], [r]) Source #

Send a message to mortals in a container.