essence-of-live-coding-0.2.8: General purpose live coding framework
Safe HaskellNone
LanguageHaskell2010

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 #

type CellHandle a b = MVar (Cell IO a b) Source #

stepHandle :: CellHandle a b -> a -> IO b Source #