>Yup. If anybody else likes my extentions to the Continuation class, let me >know and I'll wrap them up in an RAA project. If I'm the only one who >objects to the aesthetics of callcc, then I'll just keep it for myself. But >before I do create an RAA project, I want to make sure that I didn't miss a >subtlety and that my Continuation.new and Continuation.run will do everything >that you can currently do with callcc. > > Well, Continuation.run seems to me to be trivially the same as callcc, so you can do everything you can do with callcc with that alone. As long as you're tweaking, you could provide the style I mentioned earlier of calling functions directly with callcc, like this: def Continuation.run(*args) callcc do |cc| if block_given? yield cc else func, *rest = args if func.respond_to? :call func.call(cc, *rest) end end end end This lets you do something like: def foo(cc, a, b) puts a cc.call b end puts Continuation.run(method(:foo), 1, 2) Which prints 1 2 I don't know if that's desirable or not. You could also do if block_given? yield cc, *args ... To pass more arguments into the block if desired. And like you, I'm not sure that I like Continuation.run as a name for it, although I can't come up with a good name either. I'd say Continuation.call, but I think that'd be too corn-fusing. Good luck. - Dan