retronym/scalaz7-experimental — pull request #8 by runarorama (2011-11-12 07:15:10+00:00)
Title: Trampolined IO and generic Coroutines

This uses an operational monad to reify binds as a data structure. This allows us to unravel the binds from the heap instead of using the stack. The problem of digging down into left-associated binds is solved by cocondensing them as we go, turning them into right associated binds.

Coroutine is deliberately not a monad transformer. Rather, Coroutine[S, _] is designed to be transformed.