Dataflow task parallelism with futures This post concentrates on dataflow task parallelism with Haskell and Erlang. The Haskell below uses the monad-par library to construct the dataflow task graph on the right, executed in parallel with runPar: import Control.Monad.Par f :: Par Int g,h :: Int -> Par Int j,k :: Int -> Int -> Par Int main = print $ runPar $ do a <- spawn f b <- spawn (get a >>= g)