Programming in MODULA-2 (3rd corrected ed.)
Programming in MODULA-2 (3rd corrected ed.)
Obtaining coroutines with continuations
Computer Languages
Embedding continuations in procedural objects
ACM Transactions on Programming Languages and Systems (TOPLAS)
Journal of Logic Programming
Abstracting timed preemption with engines
Computer Languages
Programming in Prolog
Computer Languages
Stores and partial continuations as first-class objects in a language and its environment
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The theory and practice of first-class prompts
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Scheme and the art of programming
Scheme and the art of programming
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Typing first-class continuations in ML
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A dynamic extent control operator for partial continuations
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PLDI '93 Proceedings of the ACM SIGPLAN 1993 conference on Programming language design and implementation
Lisp and Symbolic Computation
Models of control and their implications for programming language design
Models of control and their implications for programming language design
Iteration abstraction in Sather
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lua—an extensible extension language
Software—Practice & Experience
Representing control in the presence of one-shot continuations
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Advanced Windows (3rd ed.)
Lisp and Symbolic Computation
Communications of the ACM
Design of a separable transition-diagram compiler
Communications of the ACM
Coroutines
ICON Programmng Language
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
Continuation-Based Multiprocessing
Higher-Order and Symbolic Computation
On the Expressive Power of Programming Languages
ESOP '90 Proceedings of the 3rd European Symposium on Programming
Cooperative Task Management Without Manual Stack Management
ATEC '02 Proceedings of the General Track of the annual conference on USENIX Annual Technical Conference
PPDP '04 Proceedings of the 6th ACM SIGPLAN international conference on Principles and practice of declarative programming
Relating models of backtracking
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Simula Begin
Programming in Lua, Second Edition
Programming in Lua, Second Edition
Chapter III: Hierarchical program structures
Structured programming
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Lazy continuations for Java virtual machines
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Composing parallel software efficiently with lithe
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Efficient coroutines for the Java platform
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Programming with time: cyber-physical programming with impromptu
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Towards deriving type systems and implementations for coroutines
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Passing a language through the eye of a needle
Communications of the ACM
Passing a Language through the Eye of a Needle
Queue - Programming Languages
TFP'10 Proceedings of the 11th international conference on Trends in functional programming
Rapid prototyping of active measurement tools
Computer Networks: The International Journal of Computer and Telecommunications Networking
Programming with multiple paradigms in lua
WFLP'09 Proceedings of the 18th international conference on Functional and Constraint Logic Programming
Socio-PLT: principles for programming language adoption
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Interruptible context-dependent executions: a fresh look at programming context-aware applications
Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
Proceedings of the 3rd international workshop on Free composition
A Domain Specific Language Approach for Agent-Based Social Network Modeling
ASONAM '12 Proceedings of the 2012 International Conference on Advances in Social Networks Analysis and Mining (ASONAM 2012)
Agent-based interpretations of classic network models
Computational & Mathematical Organization Theory
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
A survey of support for structured communication in concurrency control models
Journal of Parallel and Distributed Computing
Hi-index | 0.02 |
This article advocates the revival of coroutines as a convenient general control abstraction. After proposing a new classification of coroutines, we introduce the concept of full asymmetric coroutines and provide a precise definition for it through an operational semantics. We then demonstrate that full coroutines have an expressive power equivalent to one-shot continuations and one-shot delimited continuations. We also show that full asymmetric coroutines and one-shot delimited continuations have many similarities, and therefore present comparable benefits. Nevertheless, coroutines are easier implemented and understood, especially in the realm of procedural languages.