Remix.run Logo
kccqzy 7 hours ago

Constrained GOTO semantics sounds a lot like delimited continuations. Indeed I think Scheme continuations are a little too powerful for regular use by having the possibility of global effect (like longjmp). Delimited continuations make the effect more local.

taeric 6 hours ago | parent | next [-]

Delimited continuations always bounced off of me. In theory, they should be a lot like coroutines? I think, in practice, I just never really internalized all that goes into managing the current "environment" for a piece of code that is managed by the call state.

Like, I have a few partial mental models for everything that they pull together. I haven't really tried to build on that, though. Should put some time to that.

mikkupikku 6 hours ago | parent [-]

You could implement coroutines with deliminated continuations, which is probably the best way to use deliminated continuations.

jasonhemann 21 minutes ago | parent [-]

Effect handlers would like to have a word.

richdougherty 6 hours ago | parent | prev [-]

If you'll excuse the self-post, here's a blog post on goto with delimited continuations.

https://rd.nz/2009/03/goto-in-scala.html

It uses an experimental compiler plugin for the Scala compiler. It's typesafe at compile time. At runtime unfortunately it relies on exceptions for control flow.