Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
- newtype Object e m = Object {}
- liftO :: Functor f => (forall x. e x -> f x) -> Object e f
- transObject :: Functor g => (forall x. f x -> g x) -> Object e f -> Object e g
- adaptObject :: Functor m => (forall x. e x -> f x) -> Object f m -> Object e m
- echo :: Functor e => Object e e
- (.>>.) :: Functor n => Object e m -> Object m n -> Object e n
- oneshot :: (Functor e, Monad m) => (forall a. e (m a) -> m a) -> Object e m
- stateful :: Monad m => (forall a. e a -> StateT s m a) -> s -> Object e m
- sharing :: Monad m => (forall a. e a -> StateT s m a) -> s -> Object (AccessT s e) m
- class Stateful s f | f -> s where
- data AccessT s f a
- = Get (s -> a)
- | Put s a
- | LiftAccessT (f a)
- variable :: Applicative f => s -> Object (Access s) f
- type Access s = AccessT s Zero
- sequential :: Monad m => Object e m -> Object (Free e) m
Documentation
liftO :: Functor f => (forall x. e x -> f x) -> Object e f Source
Lift a natural transformation into an object.
transObject :: Functor g => (forall x. f x -> g x) -> Object e f -> Object e g Source
Change the workspace of the object.
adaptObject :: Functor m => (forall x. e x -> f x) -> Object f m -> Object e m Source
Apply a function to the messages coming into the object.
(.>>.) :: Functor n => Object e m -> Object m n -> Object e n Source
Compose two objects (aka Dependency Injection).
stateful :: Monad m => (forall a. e a -> StateT s m a) -> s -> Object e m Source
Build a stateful object.
sharing :: Monad m => (forall a. e a -> StateT s m a) -> s -> Object (AccessT s e) m Source
Build a stateful object, sharing out the state.
class Stateful s f | f -> s where Source
Like MonadState
, but doesn't require Monad
as a prerequisite.
Inflicts external state accessibility to arbitrary effects.
Get (s -> a) | |
Put s a | |
LiftAccessT (f a) |
variable :: Applicative f => s -> Object (Access s) f Source
A mutable variable.