| Portability | ghc |
|---|---|
| Stability | experimental |
| Maintainer | nickolay.kudasov@gmail.com |
| Safe Haskell | None |
Control.Agent.Free
Description
Internals of the free agent.
- type Agent f t m = FT f (t m)
- type Agent' f m = Agent f IdentityT m
- type FMT f m t = (Functor f, Monad m, MonadTrans t, Monad (t m))
- transform :: FMT f m t => (f (t m a) -> t m a) -> FT f m a -> t m a
- execAgent :: FMT f m t => (forall b. f (m b) -> m b) -> Agent f t m a -> t m a
- execAgent' :: (Functor f, Monad m) => (forall b. f (m b) -> m b) -> Agent' f m a -> m a
- execAgent_ :: FMT f m t => (forall b. f (m b) -> m b) -> Agent f t m a -> t m ()
- execAgent'_ :: (Functor f, Monad m) => (forall b. f (m b) -> m b) -> Agent' f m a -> m ()
Documentation
type Agent f t m = FT f (t m)
An Agent f t a is a program which uses functor f as a low-level
API, monad transformer t — for high-level features and which returns
a value of type a.
The important thing is that the environment may mess with t on
initialization of the agent or on low-level API calls. This was designed
for the possibility of behaviosites (see
http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.114.4071 for
more details).
type FMT f m t = (Functor f, Monad m, MonadTrans t, Monad (t m))
A constraint synonym to make type signatures less scary.
transform :: FMT f m t => (f (t m a) -> t m a) -> FT f m a -> t m a
applies transform phi agentphi to each low-level API command
in agent program. This is the basis for behaviosites.
execAgent :: FMT f m t => (forall b. f (m b) -> m b) -> Agent f t m a -> t m a
Execute an agent program with particular interpreter.
give an interpretation to the low-level API.
execAgent int agent
execAgent' :: (Functor f, Monad m) => (forall b. f (m b) -> m b) -> Agent' f m a -> m a
Like execAgent for agents with no exposed structure.
execAgent_ :: FMT f m t => (forall b. f (m b) -> m b) -> Agent f t m a -> t m ()
Like execAgent but discards the result.
execAgent'_ :: (Functor f, Monad m) => (forall b. f (m b) -> m b) -> Agent' f m a -> m ()
Like execAgent' but discards the result.