objective-0.5.2: 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 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.