[racket] Delimited continuations and parameters

From: Asumu Takikawa (asumu at ccs.neu.edu)
Date: Tue May 15 15:11:25 EDT 2012

On 2012-05-15 10:49:20 -0400, Matthias Felleisen wrote:
>        (parameterize ([p 1])
>          (λ (zzz) ;; <=================   INCLUDING THE parameterize r while not including parameterize p is an arbitrary choice

I only included `r` because it is the only parameterization in the
source code up to the delimiter, which is relevant for Kiselyov et al's
argument. Otherwise it's arbitrary.

>            (reset ;; <--- you accidentally left this one off, though that has no consequences

Whoops. This explains my confusion WRT unstable/mark-param.

> The explanation for Racket resolves a different issue in a way that
> Oleg didn't foresee, namely, it interprets parameterize in
> continuation-global way. From an implementation perspective as well as
> a threaded perspective, this may make even more sense than Oleg and
> Co's semantics because you may wish to migrate continuations from one
> thread to another (or VM to another) and you may just expect to find
> all parameters there.

That's interesting because it's the same argument they made for the
non-global choice. A specific example was that if you had a `hostname`
parameter, you would expect your migrated thread to adopt the new host's
hostname if no local (i.e., within the delimiter) parameterization
existed. Since Racket can support either option, I suppose it's not an
issue though.

Cheers,
Asumu

Posted on the users mailing list.