Hi frank It would really great if you send an article on this to the ESUG workshop. I can help reviewing the draft if you want. Stef
Yes: http://ss3.gemstone.com/ss/Control.html
Last time I checked I did need to add a shim (see the ControlPharo package), but it did load cleanly and pass all its own tests.
Control not only provides a convenient way of making partial continuations (of the shift/reset sort, if you're familiar with the literature), but also _delimited_ dynamic variables. As soon as you start stack-slicing with partial continuations, you quickly find that standard implementations of dynamic variables fail in all sorts of nasty ways. Fundamentally, "normal" dynamic variables _cannot_ work cleanly with partial continuations because they either close over too much of the dynamic environment, or too little.
Here's some reading on the topic:
[1] http://okmij.org/ftp/Computation/dynamic-binding.html [2] http://www.cs.rutgers.edu/~ccshan/dynscope/DDBinding.pdf [3] http://www.lshift.net/blog/2012/06/27/resumable-exceptions-can-macro-express...
frank
Cheers, -- Pavel
-- best, Eliot