4 ms·
Copying my comment from the Lobste.rs thread (https://lobste.rs/s/az2qlz/epic_treatise_on_error_models_for_systems https://lobste.rs/s/az2qlz/epic_treatise_on_e
by typesanitizer 2y ago
Copying my comment from the Lobste.rs thread (https://lobste.rs/s/az2qlz/epic_treatise_on_error_models_for_systems https://lobste.rs/s/az2qlz/epic_treatise_on_error_models_for...)
> Hi, author here, the title also does say “for systems programming languages” :)
> For continuations to work in a systems programming language, you can probably only allow one-shot delimited continuations. It’s unclear to me as to how one-shot continuations can be integrated into a systems language where you want to ensure careful control over lifetimes. Perhaps you (or someone else here) knows of some research integrating ownership/borrowing with continuations/algebraic effects that I’m unfamiliar with?
> The closest exception to this that I know of is Haskell, which has support for both linear types and a primitive for continuations. However, I haven’t seen anyone integrate the two, and I’ve definitely seen some soundness-related issues in various effect systems libraries in Haskell (which doesn’t inspire confidence), but it’s also possible I missed some developments there as I haven’t written much Haskell in a while.
- ForTheKidz 2y agoYes, I can see how if you view lifetime management as core to systems processing lisps might be unappealing to you.
- fanf2 2y agoYou don’t need continuations to implement resumable errors. The trick is simply to not unwind the stack when an error happens. http://axisofeval.blogspot.com/2011/04/whats-condition-system-and-why-do-you.html http://axisofeval.blogspot.com/2011/04/whats-condition-syste...
- zozbot234 2y agoYou can use async to implement continuations, and async is very much included in quite a few 'systems languages'.