SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
ORBIT: an optimizing compiler for scheme
SIGPLAN '86 Proceedings of the 1986 SIGPLAN symposium on Compiler construction
Crafting a compiler
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Realistic compilation by program transformation (detailed summary)
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Control-flow analysis of higher-order languages of taming lambda
Control-flow analysis of higher-order languages of taming lambda
Compiling with continuations
LFP '94 Proceedings of the 1994 ACM conference on LISP and functional programming
TIL: a type-directed optimizing compiler for ML
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Term rewriting and all that
A single intermediate language that supports multiple implementations of exceptions
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Efficient Computation of LALR(1) Look-Ahead Sets
ACM Transactions on Programming Languages and Systems (TOPLAS)
Modern Compiler Implementation: In ML
Modern Compiler Implementation: In ML
The Definition of Standard ML
Rabbit: A Compiler for Scheme
Orbit: an optimizing compiler for scheme
Orbit: an optimizing compiler for scheme
Compilation by program transformation
Compilation by program transformation
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies)
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Analyzing the environment structure of higher-order languages using frame strings
Theoretical Computer Science
Ordering multiple continuations on the stack
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Hi-index | 0.00 |
It is possible to extend the basic notion of “function call” to allow functions to have multiple return points. This turns out to be a surprisingly useful mechanism. This article conducts a fairly wide-ranging tour of such a feature: a formal semantics for a minimal $\lambda$-calculus capturing the mechanism; motivating examples; monomorphic and parametrically polymorphic static type systems; useful transformations; implementation concerns and experience with an implementation; and comparison to related mechanisms, such as exceptions, sum-types and explicit continuations. We conclude that multiple-return function call is not only a useful and expressive mechanism, at both the source-code and intermediate-representation levels, but also quite inexpensive to implement.