objective-0.4: Extensible objects

Safe HaskellNone
LanguageHaskell2010

Control.Monad.Objective.Class

Synopsis

Documentation

class Monad m => MonadObjective m where Source

Associated Types

data Address e m Source

type Residence m :: * -> * Source

Methods

(.-) :: Address e m -> e a -> m a infix 3 Source

Send a message to the pointed one.

new :: Object e (Residence m) -> m (Address e m) Source

Add an object to the environment.

(.&) :: (MonadObjective m, Lift (State s) f) => Address f m -> StateT s m a -> m a infix 3 Source

(.|-) :: MonadObjective m => Address e m -> Free e a -> m a infix 3 Source

like sequential, but it allows ad-hoc use of Free.

(.^>) :: (MonadObjective m, f u) => Address (Union u) m -> f a -> m a infix 3 Source

(.<<) :: (MonadObjective m, Lift (Request a b) f) => Address f m -> a -> m b Source