If I may ask one more question of you, Matthew: following up from the thread on 
`dynamic-wind`, I would love to pick your brain on what you think are the state 
of the art implementation techniques for delimited continuations. When I went 
looking for resources, I mostly found two papers:

“A Monadic Framework for Delimited Continuations” by Dvbvig, Peyton Jones, and 
Sabry (JFP 2007)

“Adding Delimited and Composable Control to a Production Programming 
Environment” by Flatt, Yu, Findler, and Felleisen (ICFP 2007)

Both these papers are extremely helpful, but they’re also both 12 years old. 
Moreover, I remember reading somewhere (perhaps from Sam?) that the 3m 
implementation of continuations is relatively slow compared to the 
implementation by Chez Scheme. Especially given your recent work on Racket on 
Chez, I imagine it’s something you’ve thought about a lot, so I’m curious if 
you have any pointers about what you consider to be the most desirable 
implementation approach.

Naïvely, it seems hard to get away from the need to maintain an annotated stack 
of frames, grouped into chunks separated by prompts, but I wonder if there are 
any tricks or optimizations that seem to win big in practice. Likewise, it 
would be helpful to know if any optimizations ended up not panning out. My 
context here is a project to implement efficient delimited control in Haskell, 
so in practice I might not have a ton of control at the lowest level, but 
that’s okay—I’m still interested in understanding the low-level details in case 
they might inform a change that could be made to GHC itself.

I’m sure a fully detailed explanation would take more time than I can 
reasonably ask you to give, so some high-level comments and pointers to other 
resources is more than fine. :) I’m mostly just trying to get a handle on where 
to start—I want to avoid choosing a path that leads to a dead end.

Thanks,
Alexis

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-dev/7559EBB2-4B34-49D1-921A-21C0D93B3EBE%40gmail.com.

Reply via email to