The semantics of lazy functional languages
Theoretical Computer Science
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
Back to direct style II: first-class continuations
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A natural semantics for lazy evaluation
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP'92 Selected papers of the symposium on Fourth European symposium on programming
Definitional Interpreters Revisited
Higher-Order and Symbolic Computation
Extensible Denotational Language Specifications
TACS '94 Proceedings of the International Conference on Theoretical Aspects of Computer Software
COORDINATION '99 Proceedings of the Third International Conference on Coordination Languages and Models
Transparent Migration of Java-Based Mobile Agents
MA '98 Proceedings of the Second International Workshop on Mobile Agents
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
POPL '76 Proceedings of the 3rd ACM SIGACT-SIGPLAN symposium on Principles on programming languages
A portable mechanism for thread persistence and migration (mobile agent)
A portable mechanism for thread persistence and migration (mobile agent)
The call-by-need lambda calculus
Journal of Functional Programming
Journal of Functional Programming
Deriving a lazy abstract machine
Journal of Functional Programming
The call-by-need lambda calculus
Journal of Functional Programming
A functional correspondence between call-by-need evaluators and lazy abstract machines
Information Processing Letters
Continuations from generalized stack inspection
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
Lightweight fusion by fixed point promotion
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A syntactic correspondence between context-sensitive calculi and abstract machines
Theoretical Computer Science
Improving the lazy Krivine machine
Higher-Order and Symbolic Computation
Information Processing Letters
Defunctionalized interpreters for programming languages
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
Lazy evaluation and delimited control
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Science of Computer Programming
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
From type checking by recursive descent to type checking with an abstract machine
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Three syntactic theories for combinatory graph reduction
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
Classical call-by-need and duality
TLCA'11 Proceedings of the 10th international conference on Typed lambda calculi and applications
Evaluating call-by-need on the control stack
TFP'10 Proceedings of the 11th international conference on Trends in functional programming
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
A unified approach to fully lazy sharing
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The call-by-need lambda calculus, revisited
ESOP'12 Proceedings of the 21st European conference on Programming Languages and Systems
Classical call-by-need sequent calculi: the unity of semantic artifacts
FLOPS'12 Proceedings of the 11th international conference on Functional and Logic Programming
Three syntactic theories for combinatory graph reduction
ACM Transactions on Computational Logic (TOCL)
Hi-index | 0.00 |
Starting from the standard call-by-need reduction for the λ-calculus that is common to Ariola, Felleisen, Maraist, Odersky, and Wadler, we inter-derive a series of hygienic semantic artifacts: a reduction-free stateless abstract machine, a continuation-passing evaluation function, and what appears to be the first heapless natural semantics for call-by-need evaluation. Furthermore we observe that a data structure and a judgment in this natural semantics are in defunctionalized form. The refunctionalized counterpart of this evaluation function is an extended direct semantics in the sense of Cartwright and Felleisen. Overall, the semantic artifacts presented here are simpler than many other such artifacts that have been independently worked out, and which require ingenuity, skill, and independent soundness proofs on a case-by-case basis. They are also simpler to inter-derive because the inter-derivational tools (e.g., refocusing and defunctionalization) already exist.