objective-1.2: 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

type Instance f g = MVar (Object f g) Source #

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.

Invocation

invokeOnUsing :: (MonadIO m, MonadMask m) => (Object f g -> t a -> g (a, Object f g)) -> (forall x. g x -> m x) -> Instance f g -> t a -> m a Source #

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. In case of exception, the original object will be set.

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

Invoke a method.

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

(?-) :: (MonadIO m, MonadMask m) => Instance f m -> f a -> m (Maybe a) Source #

Try to invoke a method. If the instance is unavailable, it returns Nothing.