Erlang comes with gen_fsm behavior because often when writting network protocols and servers, a state machine is a useful abstraction.
Relevant:
"Rage Against The Finite-State Machine" from "Learn you some Erlang For Great Good"
Relevant:
"Rage Against The Finite-State Machine" from "Learn you some Erlang For Great Good"
http://www.yesodweb.com/blog/2010/09/enumerators-tutorial-pa...
An iteratee is essentially just a function that takes an input symbol and returns either a final state value or another iteratee.