mgree/trapmoline
Trampolining is a method for cooperative, stackless
computation. The trampolining method was first used to implement
support for continuations and other control flow in Lisp-like
languages. Here, we use the trampolining idiom to cooperatively
multitask: long running code can be either run directly with a
stepper or via a "fuel" monad.