dataflower-0.2.0.0: src/Test/Dataflow.hs
module Test.Dataflow (
runDataflow
) where
import Control.Concurrent.STM.TVar (newTVarIO, readTVarIO)
import Control.Monad (void)
import Control.Monad.IO.Class (MonadIO (..))
import Dataflow (Dataflow, Edge, compile, execute,
outputTVar)
import Prelude
-- | Run a dataflow with a list of inputs.
--
-- @since 0.1.0.0
runDataflow :: MonadIO io => (Edge o -> Dataflow (Edge i)) -> [i] -> io [o]
runDataflow dataflow inputs =
liftIO $ do
out <- newTVarIO []
program <- compile (dataflow =<< outputTVar (:) out)
void $ execute inputs program
reverse <$> readTVarIO out