Skip to content
A stream processing library for Scala
Scala Shell
Latest commit 6161245 Jul 16, 2015 @joshcough joshcough v1.0.1
Failed to load latest commit information.
project Dependency upgrades & a 2.11-only warning. Mar 6, 2014
src scalaz 7.1 Jul 12, 2015
.gitignore Machines and steps Aug 18, 2012
.travis.yml scalaz 7.1 Jul 11, 2015
LICENSE Added publishing to Bintray. Jul 29, 2013 Update Jul 30, 2013
build.sbt v1.0.1 Jul 16, 2015
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

Something went wrong with that request. Please try again.