STCLang is a library that enables stateful, implicit, monadic parallel computation in Haskell. The core ideas come from the ohua project.
STCLang lets you create parallel dataflows with stateful nodes without having to explicitly wire complex graph structures. Instead the program is written with an embedded, monadic DSL and automatically transformed into a graph and executed in parallel.
On top of the base abstraction we have also built an FRP (functional reactive programming) interface. This allows you to run reactive programs on sequential streams of values and leverage pipeline parallelism to peed up computation.
We also published the theory and concepts behind this library.
We documented the principles in this library in a paper at the Haskell Symposium 2019.
- DOI Paper link: https://doi.org/10.1145/3331545.3342600
- Direct link to PDF: https://ohua-dev.github.io/papers/stc-lang.pdf
- Slides for the presentation at Haskell'19: https://ohua-dev.github.io/slides/haskell-19-stclang.pdf
- Entry in our bibliography: https://ohua-dev.github.io/bib/#stclang-state-thread-composition-as-a-foundation-for-monadic-dataflow-parallelism