objective-0.5.2.1: Extensible objects

Copyright(c) Fumiaki Kinoshita 2014
LicenseBSD3
MaintainerFumiaki Kinoshita <fumiexcel@gmail.com>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Objective.Class

Description

MonadObjective class and operations

Synopsis

Documentation

type Instance' e m = Instance e m m Source

class (Tower m, Monad m) => MonadObjective m where Source

Associated Types

data Instance e n m Source

Methods

invoke :: Monad n => Instance e n m -> e a -> m (n (m a)) Source

Send a message to the pointed one.

new :: Object e n -> m (Instance e n m) Source

Add an object to the environment.

(.-) :: (Monad n, Elevate n m, MonadObjective m, Elevate m f) => Instance e n m -> e a -> f a infix 3 Source

Invoke a method.

(.^) :: (Elevate e f, Monad n, Elevate n m, MonadObjective m, Elevate m g) => Instance f n m -> e a -> g a infix 3 Source

Similar to '(.-)', but also lifts the method according to the instance.

(.&) :: (MonadObjective m, Elevate (StateT s m) e, Monad n, Elevate n m, Elevate m f) => Instance e n m -> StateT s m a -> f a infix 3 Source

Specialized (.^) for StateT