essence-of-live-coding-0.2.0.1: General purpose live coding framework

Safe HaskellSafe
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 eIn eOut a b = Cell (ReaderT eIn (WriterT eOut m)) a b Source #

type ExternalLoop eIn eOut = Cell IO eIn eOut Source #

runWriterC :: Monad m => Cell (WriterT w m) a b -> Cell m a (b, w) Source #

concurrently :: (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 #