The theory and practice of first-class prompts
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Representing control in the presence of first-class continuations
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A generalization of exceptions and control in ML-like languages
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Lisp and Symbolic Computation
Type dispatch for named hierarchical types
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Final shift for call/cc:: direct implementation of shift and reset
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Implementation Strategies for First-Class Continuations
Higher-Order and Symbolic Computation
Portable Implementation of Continuation Operators in Imperative Languages by Exception Handling
Advances in Exception Handling Techniques (the book grow out of a ECOOP 2000 workshop)
Extensional normalisation and type-directed partial evaluation for typed lambda calculus with sums
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuations from generalized stack inspection
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Proceedings of the eleventh ACM SIGPLAN international conference on Functional programming
Adding delimited and composable control to a production programming environment
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
A monadic framework for delimited continuations
Journal of Functional Programming
Shifting the stage: staging with delimited control
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Embedded Probabilistic Programming
DSL '09 Proceedings of the IFIP TC 2 Working Conference on Domain-Specific Languages
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Direct implementation of shift and reset in the MinCaml compiler
Proceedings of the 2009 ACM SIGPLAN workshop on ML
Monolingual probabilistic programming using generalized coroutines
UAI '09 Proceedings of the Twenty-Fifth Conference on Uncertainty in Artificial Intelligence
Towards deriving type systems and implementations for coroutines
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Delimited control in OCaml, abstractly and concretely: system description
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
QEMU/CPC: static analysis and CPS conversion for safe, portable, and efficient coroutines
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 5.23 |
We describe the first implementation of multi-prompt delimited control operators in OCaml that is direct in that it captures only the needed part of the control stack. The implementation is a library that requires no changes to the OCaml compiler or run-time, so it is perfectly compatible with existing OCaml source and binary code. The library has been in fruitful practical use since 2006. We present the library as an implementation of an abstract machine derived by elaborating the definitional machine. The abstract view lets us distill a minimalistic API, scAPI, sufficient for implementing multi-prompt delimited control. We argue that a language system that supports exception and stack-overflow handling supports scAPI. With byte- and native-code OCaml systems as two examples, our library illustrates how to use scAPI to implement multi-prompt delimited control in a typed language. The approach is general and has been used to add multi-prompt delimited control to other existing language systems.