A stream processing library for Scala
Scala Shell
Latest commit ee3e0ec Sep 29, 2016 @runarorama committed on GitHub Merge pull request #25 from xuwei-k/update
update dependencies
Failed to load latest commit information.
project update dependencies Sep 29, 2016
src scalaz 7.1 Jul 11, 2015
.gitignore Machines and steps Aug 18, 2012
.travis.yml update dependencies Sep 29, 2016
LICENSE Added publishing to Bintray. Jul 30, 2013
README.md Update README.md Jul 31, 2013
build.sbt update dependencies Sep 29, 2016
sbt First commit Aug 17, 2012



Machines are demand-driven coroutines. They are similar to Pipes, Conduits, or Iteratees, but can support inputs of arbitrary complexity and are entirely pure. Instead of having monadic effects of its own, a Machine can be driven by a Driver which can have effects when feeding the Machine input or when reading its output.

You design a Machine by writing a Plan. You then compile the machine if it is to run once to completion, or designate it to run repeatedly. Plan provides a monadic API for building machines, but Machines themselves do not form a monad.

Simple machines that read from one input source are called a Process and processes form a Category. More generally you can attach a Process to the output of any type of Machine, yielding a new Machine.

More complicated machines provide other ways of connecting to them.

Binary packages available at https://bintray.com/runarorama/maven/machines