Am Mo., 10. Okt. 2022 um 00:50 Uhr schrieb Shiro Kawai <shiro.ka...@gmail.com>:
[...] > I think it's ok for the above not to work. My concern is more like this one: > > (let ((p (make-parameter 0))) > (define g (make-coroutine-generator (lambda (yield) > (parameterize > ((p 1)) > (yield p) > (yield > p))))) > (unwind-protect > (parameterize ((p 2)) > (list (g) (g))) > ) > > If parameterize is realized with dynamic-wind, can this work? Dynamic-wind alone is not a problem because it does not remove or reinstall continuation frames. That said, by SRFI 226, dynamic-wind cannot be implemented using dynamic-wind because the last expression of the body of a parameterize form must be in tail context if the parameterize form itself is in tail context. The code above works because the generator procedure is not run outside the dynamic extent of the unwind-protect form. It would be a problem if the generator were started outside and continued inside because this would mean jumping in and out of the dynamic extent of the unwind-protect form. But the real problem lies in the SRFI 158 implementation of make-coroutine-generator using call/cc. Besides that the dynamic environments, in which the forms of the generator body are evaluated, is not well-defined, using call/cc leaks space (in a way discussed in the rationale of SRFI 226). With SRFI 226 available, make-coroutine-generator should be rewritten with delimited continuations. >> You mean dynamic-lambda from SRFI 154? That should be considered >> subsumed and deprecated by SRFI 226. (I should ask Arthur to withdraw >> it when SRFI 226 is finalized.) Your question seems to be less about >> composable continuations, and more about dynamic-lambda. > > > Yes, I meant srfi-154. What I'm trying to do is to undersand composable > continuations wrt dyanmic environment. Initially I thought it's like a > variation of delimited continuations, but seems that there's a subtle > difference so I have to follow the srfi explanation more closely. Composable continuations are delimited continuations. I use the adjective "composable" because, principally, even undelimited continuations are delimited (by the primordial prompt whatever that is in the context).