Skip to content
Networks of composable stream transducers
Branch: master
Clone or download
Latest commit ec1c641 May 10, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks Fix deprecation warnings with conduit-1.3.0 Feb 1, 2018
examples Regenerate .travis.yml May 1, 2019
src/Data Avoid -Wnoncanonical-monoid-instances warnings May 5, 2019
tests Use cabal-doctest in Setup.hs Feb 4, 2017
.gitignore Add GHC 8.4.1 Travis build Jan 7, 2018
.travis.yml Regenerate .travis.yml May 1, 2019
.vim.custom repository expanded Aug 16, 2012
CHANGELOG.markdown Finalize version 0.7 May 10, 2019
LICENSE version bump, CHANGELOG, copyright bump [ci skip] Jan 13, 2016
README.markdown Update link to the Machines talk Jan 4, 2018
Setup.lhs Simplify the Setup script May 12, 2017
Warning.hs Simplify the Setup script May 12, 2017
cabal.haskell-ci Factor out haskell-ci configuration Mar 12, 2019
cabal.project
config repository expanded Aug 16, 2012
machines.cabal Spruce up CHANGELOG May 2, 2019

README.markdown

machines

Hackage Build Status

Ceci n'est pas une pipe

Machines are demand driven input sources like pipes or conduits, but can support multiple inputs.

You design a Machine by writing a Plan. You then construct the machine.

Simple machines that take one input 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.

Typically the use of machines proceeds by using simple plans into machine Tees and Wyes, capping many of the inputs to those with possibly monadic sources, feeding the rest input (possibly repeatedly) and calling run or runT to get the answers out.

There is a lot of flexibility when building a machine in choosing between empowering the machine to run its own monadic effects or delegating that responsibility to a custom driver.

A port of this design to scala is available from runarorama/scala-machines

Runar's slides are also available from http://web.archive.org/web/20161029161813/https://dl.dropboxusercontent.com/u/4588997/Machines.pdf

Some worked examples are here https://github.com/alanz/machines-play

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.

-Edward Kmett

You can’t perform that action at this time.