[plt-scheme] Continuation marks question

From: John Clements (clements at brinckerhoff.org)
Date: Sat May 12 14:34:39 EDT 2007

On May 12, 2007, at 11:00 AM, Jay McCarthy wrote:

> (Really a message to Matthew, but to the list for posterity.)
>
> Is it possible to a get a function with continuation-marks-set->list
> that does not require me to know the keys in the set?
>
> There are a few ways I can get around it if not. I can keep track of
> all the keys I see in the expanded program, but that won't do for
> marks put in my called modules. I might be able to work with just
> exposing the parameterization key.
>
> In a sense this is a bad idea, because I don't know the key for a
> reason. If that's the answer, then I would at-least say that the
> parameterization key should be available.
>
> Jay
>
> ps What I am doing is serializing continuations... my current
> implementation loses the continuation-marks, which manifests by users
> not being able to use parameters, which I think are very useful on the
> web.

Yep, this was part of the design of cm's.  That is, if you want to  
capture the user's cm's, you need to know what they are.

One sneaky trick you could play with separate modules would be to  
redefine with-continuation-mark.  Of course, this only works if you  
have access to these modules' source.  Alternatively, you could  
insist that in order to be serializable, these modules include a "cm- 
keys" call that is guaranteed to return the set of all keys used by  
the module. Or or or...

WRT the parameterization key: perhaps it would be possible to add to  
mzscheme a "with-parameterization-key" form that uses the  
specified ...  hmm, that would pretty much destroy the security of  
parameters used by called modules.

Well, Matthew will probably have something more helpful to say, but  
it appears to me that in general, the power to observe the full  
continuation comes only with access to all the source code, and  
that's probably as it should be.

John



Posted on the users mailing list.