Yes, performance is a concern -- it might be the difference between making significant use of zipper (very elegant, many nice properties) or using a more imperative/mutating api. Of course, this is extreme premature optimization as I am only speculating at this point :)
Also I was wondering whether delimited continuations could be serialized more compactly/quickly, as (under the interpreter) only a subtree of the abstract syntax tree (and any state reachable from that subtree) would need to be captured, right? Depending on the size & complexity of an application, that might be a big win when managing really large numbers of concurrent sessions via continuations -- when storing them in client cookies or a database.
An article by Chris Double (http://www.double.co.nz/scheme/partial-continuations/partial-continuations.h...) suggests that such applications really want to use delimited continuations for inherent structual reasons, and that might make performance important again.
Finally, more compact/faster serialization would definitely be a win for distributed applications that make significant use of process migration via your 'goto' operator, or Termite's 'migrate'.
Again, this is only speculation/musing.
Thanks,
Chris
ps. BTW, I couldn't find continuation-graft mentioned in the beta 15 manual, even under the not-yet-documented section (I grepped the source to confirm it is present). Is that intentional?
----- Original Message ----- From: "Marc Feeley" feeley@iro.umontreal.ca To: "Newcombe, Chris" cnewcom@amazon.com Cc: gambit-list@iro.umontreal.ca Sent: Wednesday, December 21, 2005 7:17 PM Subject: Re: [gambit-list] Efficient support for delimited continuations?
On 21-Dec-05, at 8:35 PM, Newcombe, Chris wrote:
Marc,
Does (or will) Gambit v4 have native support for shift/reset or splitter/abort/call/pc? And if so, can the resulting partial continuations be serialized?
The short answer is "no". On the other hand, I don't think it would be too hard to support such control constructs.
Let me reply with a question of my own... why do you need these control operators to be natively supported? You can implement them on top of call/cc fairly easily. Are you worried (obsessed?) with performance?
Marc
_______________________________________________ Gambit-list mailing list Gambit-list@iro.umontreal.ca http://mailman.iro.umontreal.ca/mailman/listinfo/gambit-list