objective-1.1.1: Composable objects

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







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.


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

invokeOn :: (MonadIO m, MonadMask m) => (forall x. g x -> m x) -> MVar (Object 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) => MVar (Object f m) -> f a -> m a infixr 3 Source

Invoke a method.

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

(?-) :: (MonadIO m, MonadMask m) => MVar (Object f m) -> f a -> m (Maybe a) Source

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