Here's the obligatory "Haskell has a monad for that" comment
http://hackage.haskell.org/package/mtl-2.2.1/docs/Control-Mo...
http://hackage.haskell.org/package/mtl-2.2.1/docs/Control-Mo...
One thing I like about Haskell is that it's designed so that adding new control flow is not a big deal -- just design a monad. In Scheme it seems to be more work to get it all right.
(The bottom of the documentation page has a contrived example of this.)