Safe Haskell | None |
---|---|
Language | Haskell2010 |
LiveCoding.External
Description
Utilities for integrating live programs into external loops, using IO
concurrency.
The basic idea is two wormholes (see Winograd-Court's thesis).
Documentation
type ExternalCell (m :: Type -> Type) eIn eOut a b = Cell (ReaderT eIn (WriterT eOut m)) a b Source #
type ExternalLoop eIn eOut = Cell IO eIn eOut Source #
concurrently :: forall (m :: Type -> Type) eOut eIn a b. (MonadIO m, Monoid eOut) => ExternalCell m eIn eOut a b -> IO (Cell m a b, ExternalLoop eIn eOut) Source #
makeHandle :: Cell IO a b -> IO (CellHandle a b) Source #
stepHandle :: CellHandle a b -> a -> IO b Source #