[racket] Implementing delimited continuations using a CPS transform

From: Patrick Li (patrickli.2001 at gmail.com)
Date: Thu Nov 24 17:05:30 EST 2011

Thanks for the feedback. The literature references are extremely helpful,
and I will read through them carefully.
As an aside, may I ask what notation is being used in these papers?

I thought it might be lambda calculus, however I cannot determine what it
means to surround an expression using calligraphic []'s.


On Thu, Nov 24, 2011 at 7:01 AM, Matthias Felleisen <matthias at ccs.neu.edu>wrote:

> On Nov 24, 2011, at 9:52 AM, nicolas.oury at gmail.com wrote:
> >> But you could also break the tail-call discipline of CPS and translate
> [shift e] as \k. (k [e](\x.x))
> >> Or you can use our 'abstract' continuations to manipulate a stack of
> continuations directly.
> >
> > What are your 'abstract' continuations? Sounds very interesting.
> See LFP 1988. When I first invented prompts and functional continuations,
> I did not know how
> to assign a denotational meaning to them, i.e., a translation from syntax
> to sets of denotations.
> Or how to write a TCO interpreter that has the right properties. The key
> insight was that you
> don't have to have monolithic functions as continuations with just one
> operation on them
> (composition). Instead you can use any ordinary algebra of combinators
> that combine small
> pieces (functions) into the whole thing (continuation) and use them
> (throw). Best of all,
> if you look at the initial model of a simple stack algebra, you get the
> standard notion
> of continuations and if you look at the final interpretation, you get a
> stack of functions,
> which you can then use to do prompts/F prompts/C prompts/callcc. One of
> these combinations is
> shift/reset, as reinvented by them. I forgot which one. -- Matthias
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20111124/2cb6014c/attachment.html>

Posted on the users mailing list.