[racket] Implementing delimited continuations using a CPS transform

From: J. Ian Johnson (ianj at ccs.neu.edu)
Date: Thu Nov 24 18:10:07 EST 2011

Those are known as "semantic brackets." They denote a syntactic form into its ideal mathematical object. In a sense, they give "meaning" to what they surround.
----- Original Message -----
From: Patrick Li <patrickli.2001 at gmail.com>
To: Matthias Felleisen <matthias at ccs.neu.edu>
Cc: users at racket-lang.org
Sent: Thu, 24 Nov 2011 17:05:30 -0500 (EST)
Subject: Re: [racket] Implementing delimited continuations using a CPS transform

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

Posted on the users mailing list.