Embedding continuations in procedural objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Intensions and extensions in a reflective tower
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
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
Reasoning with continuations II: full abstraction for models of control
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
Shallow binding makes functional arrays fast
ACM SIGPLAN Notices
On the expressive power of programming languages
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Continuation-based partial evaluation
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
Monad transformers and modular interpreters
POPL '95 Proceedings of the 22nd 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
Environmental acquisition: a new inheritance-like abstraction mechanism
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-directed partial evaluation
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 26th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Type-based analysis of uncaught exceptions
ACM Transactions on Programming Languages and Systems (TOPLAS)
Communications of the ACM
The Second Futamura Projection for Type-Directed Partial Evaluation
Higher-Order and Symbolic Computation
A Syntactic Theory of Dynamic Binding
Higher-Order and Symbolic Computation
Memoization in Type-Directed Partial Evaluation
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Extensible Denotational Language Specifications
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
Normalization and Partial Evaluation
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
Reification without Evaluation
Reification without Evaluation
The calculi of lambda-nu-cs conversion: a syntactic theory of control and state in imperative higher-order programming languages
A sound and complete axiomatization of delimited continuations
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
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
Combinators for program generation
Journal of Functional Programming
A type-theoretic foundation of continuations and prompts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Environmental acquisition revisited
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Higher-Order and Symbolic Computation
Acute: high-level programming language design for distributed computation
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Backtracking, interleaving, and terminating monad transformers: (functional pearl)
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Normalization by evaluation for the computational lambda-calculus
TLCA'01 Proceedings of the 5th international conference on Typed lambda calculi and applications
A tail-recursive semantics for stack inspections
ESOP'03 Proceedings of the 12th European conference on Programming
Functional pearl: the great escape or, how to jump the border without getting caught
ICFP '07 Proceedings of the 12th 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 static simulation of dynamic delimited control
Higher-Order and Symbolic Computation
Dynamic rebinding for marshalling and update, via redex-time and destruct-time reduction
Journal of Functional Programming
Lazy evaluation and delimited control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Shifting the stage: staging with delimited control
Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Context-oriented programming in ContextL: state of the art
Celebrating the 50th Anniversary of Lisp
How should context-escaping closures proceed?
International Workshop on Context-Oriented Programming
A semantics for context-oriented programming with layers
International Workshop on Context-Oriented Programming
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Beyond static and dynamic scope
DLS '09 Proceedings of the 5th symposium on Dynamic languages
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A substructural type system for delimited continuations
TLCA'07 Proceedings of the 8th international conference on Typed lambda calculi and applications
Polymorphic delimited continuations
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Inverse scope as metalinguistic quotation in operational semantics
JSAI'07 Proceedings of the 2007 conference on New frontiers in artificial intelligence
The case for JavaScript transactions: position paper
PLAS '10 Proceedings of the 5th ACM SIGPLAN Workshop on Programming Languages and Analysis for Security
Shifting the stage: Staging with delimited control
Journal of Functional Programming
Delimited control in OCaml, abstractly and concretely: system description
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Polymorphic multi-stage language with control effects
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Delimited control in OCaml, abstractly and concretely
Theoretical Computer Science
A systematic approach to delimited control with multiple prompts
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Higher-Order and Symbolic Computation
Constraining delimited control with contracts
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Extensible effects: an alternative to monad transformers
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Hi-index | 0.00 |
Dynamic binding and delimited control are useful together in many settings, including Web applications, database cursors, and mobile code. We examine this pair of language features to show that the semantics of their interaction is ill-defined yet not expressive enough for these uses.We solve this open and subtle problem. We formalise a typed language DB+DC that combines a calculus DB of dynamic binding and a calculus DC of delimited control. We argue from theoretical and practical points of view that its semantics should be based on delimited dynamic binding: capturing a delimited continuation closes over part of the dynamic environment, rather than all or none of it; reinstating the captured continuation supplements the dynamic environment, rather than replacing or inheriting it. We introduce a type- and reduction-preserving translation from DB + DC to DC, which proves that delimited control macro-expresses dynamic binding. We use this translation to implement DB+DC in Scheme, OCaml, and Haskell.We extend DB + DC with mutable dynamic variables and a facility to obtain not only the latest binding of a dynamic variable but also older bindings. This facility provides for stack inspection and (more generally) folding over the execution context as an inductive data structure.