objective-1.0.4: Composable objects

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

Control.Object.Instance

Contents

Description

 

Synopsis

Instantiation

data Instance f g where Source

TMVar-based instance

Constructors

InstRef :: (forall x. e x -> f x) -> (forall x. g x -> h x) -> TMVar (Object f g) -> Instance e h 

new :: MonadIO m => Object f g -> m (Instance f g) Source

Create a new instance. This can be used inside unsafePerformIO to create top-level instances.

newSettle :: MonadIO m => Object f m -> m (Instance f m) Source

Create a new instance, having it sitting on the current environment.

newSTM :: MonadSTM m => Object f g -> m (Instance f g) Source

Create a new instance.

Invocation

invokeOn :: (MonadIO m, MonadMask m) => (forall x. g x -> m x) -> Instance f g -> f a -> m a Source

Invoke a method with an explicit landing function.

invokeOnSTM :: (forall x. g x -> STM x) -> Instance f g -> f a -> STM a Source

Invoke a method with an explicit landing function.

(.-) :: (MonadIO m, MonadMask m) => Instance f m -> f a -> m a infixr 3 Source

Invoke a method.

(..-) :: MonadSTM m => Instance f STM -> f a -> m a infixr 3 Source

Invoke a method, atomically.

snapshot :: (MonadSTM m, Functor g) => Instance f g -> m (Object f g) Source

Take a snapshot of an instance.