[Haskell-cafe] Tutorials on Machines?

gonzaw gonzaw308 at gmail.com
Sat Dec 27 18:31:40 UTC 2014


I've been recently getting into the streaming libraries (pipes, conduit,
etc), and noticed there was this talk about this "Machines" library which
supposedly handles streaming too.

However, I'm getting a little confused after reading its source. From what
it seems, machines are a completely different beast than pipes or conduits,
and I don't seem to find good guides on what exactly they are, other than a
generic "a machine is a thingy that takes inputs and maybe produces some
output or something".

Pipes and conduits I see as constructions that only allow streaming. You put
this construction in "between" a source of inputs and a consumer of outputs,
and it streams from one to the other, possibly with side-effects, state,
termination, etc. The thing is that the tutorials on them, and the examples
that get used to show their power, make sense in this context, so you can
easily grok them. 

But it's harder to grok Machines. 
I see the source and notice how you can model Moore machines, Mealy
machines, Stacks, and other constructions, and all of this can be made into
machines. But at the same time you can construct machines by yourself with
Plans, using similar syntax used by pipes/conduit ("yield", "await"). So it
confuses me, since I'm not sure what the connection between concepts like
Mealy machines, and concepts like "yield"/"await" (which are also used in
other streaming libraries), is.

I'd like to know if there is a good tutorial on what all of these are, how
they relate to each other, and allow you to easily understand all those
constructions (moore/mealy machines, plans, processes, etc) and understand
when you can use one or the other.


View this message in context: http://haskell.1045720.n5.nabble.com/Tutorials-on-Machines-tp5762883.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.

More information about the Haskell-Cafe mailing list