This provides an example of how one can encode real monads in scheme in such a way that you can write combinators that are parametric in their choice of monad.
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