Composable continuations and reset/shift
Shiro Kawai
(18 Nov 2022 19:07 UTC)
|
Re: Composable continuations and reset/shift Marc Nieper-Wißkirchen (18 Nov 2022 19:27 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(18 Nov 2022 19:29 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(18 Nov 2022 19:51 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(18 Nov 2022 19:57 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(18 Nov 2022 21:12 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(18 Nov 2022 21:28 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Nov 2022 00:04 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(19 Nov 2022 06:47 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Nov 2022 07:04 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(19 Nov 2022 07:07 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Nov 2022 07:15 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(19 Nov 2022 07:48 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Nov 2022 09:00 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(19 Nov 2022 10:51 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Nov 2022 23:00 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(20 Nov 2022 07:24 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(20 Nov 2022 12:17 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(02 Feb 2023 20:02 UTC)
|
Re: Composable continuations and reset/shift
Marc Nieper-Wißkirchen
(18 Feb 2023 14:34 UTC)
|
Re: Composable continuations and reset/shift
Shiro Kawai
(19 Feb 2023 01:10 UTC)
|
Thanks for the report, Shiro! I have to investigate Racket's behavior. In 11.3.2 of the Racket reference, it says: "If a continuation is captured during the evaluation of parameterize, invoking the continuation effectively re-introduces the parameterization, since a parameterization is associated to a continuation via a continuation mark (see Continuation Marks) using a private key." This seems to be consistent with SRFI 226 and its sample implementation, but not consistent with your Racket experiments. Am Fr., 18. Nov. 2022 um 20:07 Uhr schrieb Shiro Kawai <xxxxxx@gmail.com>: > > It seems that there's a disagreement in how a delimited continuation captures dynamic environment, between Racket and srfi-226. > > Suppose the following code: > > ``` > (define (print . xs) (for-each display xs) (newline)) > > (define m (make-parameter 0)) > > (define c #f) > > (define (foo) > (parameterize ((m 1)) > (reset > (print 'a: (m)) > (shift k (print 'b: (m)) (set! c k)) > (print 'c: (m))))) > > (define (bar) > (parameterize ((m 2)) > (c #f))) > ``` > > With srfi-226 (using reset/shift as given in the srfi) reference implementation on Chez, I get this: > > ``` > > (run foo) > a:1 > b:1 > > (run bar) > c:1 > ``` > > With Racket racket/control, I get this: > > ``` > > (foo) > a:1 > b:1 > > (bar) > c:2 > ``` > > I'm switching Gauche's internals to srfi-226 based model, and I noticed the difference---the current released version of Gauche (relying on dynamic-wind to handle parameterization) works like Racket, while the srfi-226 based version (using dynamic env chain to keep parameters) works like srfi-226 reference implementation. > > I think srfi-226 behavior is more consistent (when the delimited continuation is invoked, it restores the dynamic environment of the continuation of reset), but is there a plausible explanation of Racket behavior? > > This difference actually caused a compatibility problem of an existing application so I want to understand it fully. > > > > > > >