[plt-scheme] Continuation marks question
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