Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
From interpreter to compiler: a representational derivation
on Programs as data objects
A scheme for a higher-level semantic algebra
Algebraic methods in semantics
Representing control in the presence of first-class continuations
PLDI '90 Proceedings of the ACM SIGPLAN 1990 conference on Programming language design and implementation
A formulae-as-type notion of control
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typing first-class continuations in ML
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
An abstract frame work for environment machines
Theoretical Computer Science
Semantics with applications: a formal introduction
Semantics with applications: a formal introduction
The essence of functional programming
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The formal semantics of programming languages: an introduction
The formal semantics of programming languages: an introduction
ESOP'92 Selected papers of the symposium on Fourth European symposium on programming
Continuation-Based Program Transformation Strategies
Journal of the ACM (JACM)
Deriving Target Code as a Representation of Continuation Semantics
ACM Transactions on Programming Languages and Systems (TOPLAS)
Lambda-dropping: transforming recursive equations into programs with block structure
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Semantics-directed machine architecture
POPL '82 Proceedings of the 9th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Revised Report on the Algorithmic Language Scheme
Higher-Order and Symbolic Computation
Definitional Interpreters Revisited
Higher-Order and Symbolic Computation
Implementation Strategies for First-Class Continuations
Higher-Order and Symbolic Computation
Design and Correctness of Program Transformations Based on Control-Flow Analysis
TACS '01 Proceedings of the 4th International Symposium on Theoretical Aspects of Computer Software
STACS '87 Proceedings of the 4th Annual Symposium on Theoretical Aspects of Computer Science
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
Definitional interpreters for higher-order programming languages
ACM '72 Proceedings of the ACM annual conference - Volume 2
Automatically Restructuring Programs for the Web
Proceedings of the 16th IEEE international conference on Automated software engineering
A functional correspondence between evaluators and abstract machines
Proceedings of the 5th ACM SIGPLAN international conference on Principles and practice of declaritive programming
Rabbit: A Compiler for Scheme
The calculi of lambda-nu-cs conversion: a syntactic theory of control and state in imperative higher-order programming languages
A functional correspondence between call-by-need evaluators and lazy abstract machines
Information Processing Letters
A tail-recursive machine with stack inspection
ACM Transactions on Programming Languages and Systems (TOPLAS)
Polymorphic typed defunctionalization and concretization
Higher-Order and Symbolic Computation
Lightweight fusion by fixed point promotion
Proceedings of the 34th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Theoretical Computer Science - Applied semantics: Selected topics
A syntactic correspondence between context-sensitive calculi and abstract machines
Theoretical Computer Science
Efficient type inference using ranked type variables
ML '07 Proceedings of the 2007 workshop on Workshop on ML
A concrete framework for environment machines
ACM Transactions on Computational Logic (TOCL)
What is the meaning of these constant interruptions?
Journal of Functional Programming
A call-by-name lambda-calculus machine
Higher-Order and Symbolic Computation
Information Processing Letters
Mechanized metatheory for the masses: the PoplMark challenge
TPHOLs'05 Proceedings of the 18th international conference on Theorem Proving in Higher Order Logics
A Context-based Approach to Proving Termination of Evaluation
Electronic Notes in Theoretical Computer Science (ENTCS)
Context-based proofs of termination for typed delimited-control operators
PPDP '09 Proceedings of the 11th ACM SIGPLAN conference on Principles and practice of declarative programming
Small-step and big-step semantics for call-by-need
Journal of Functional Programming
Inter-deriving semantic artifacts for object-oriented programming
Journal of Computer and System Sciences
From reduction-based to reduction-free normalization
AFP'08 Proceedings of the 6th international conference on Advanced functional programming
Functional derivation of a virtual machine for delimited continuations
Proceedings of the 12th international ACM SIGPLAN symposium on Principles and practice of declarative programming
Towards deriving type systems and implementations for coroutines
APLAS'10 Proceedings of the 8th Asian conference on Programming languages and systems
Three syntactic theories for combinatory graph reduction
LOPSTR'10 Proceedings of the 20th international conference on Logic-based program synthesis and transformation
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
A correspondence between type checking via reduction and type checking via evaluation
Information Processing Letters
Defunctionalized interpreters for call-by-need evaluation
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Theoretical Computer Science
Constructing customized interpreters from reusable evaluators using GAME
SC'12 Proceedings of the 11th international conference on Software Composition
Proceedings of the 34th ACM SIGPLAN conference on Programming language design and implementation
A logical correspondence between natural semantics and abstract machines
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Three syntactic theories for combinatory graph reduction
ACM Transactions on Computational Logic (TOCL)
Deriving interpretations of the gradually-typed lambda calculus
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
This document illustrates how functional implementations of formal semantics (structural operational semantics, reduction semantics, small-step and big-step abstract machines, natural semantics, and denotational semantics) can be transformed into each other. These transformations were foreshadowed by Reynolds in "Definitional Interpreters for Higher-Order Programming Languages" for functional implementations of denotational semantics, natural semantics, and big-step abstract machines using closure conversion, CPS transformation, and defunctionalization. Over the last few years, the author and his students have further observed that functional implementations of small-step and of big-step abstract machines are related using fusion by fixed-point promotion and that functional implementations of reduction semantics and of small-step abstract machines are related using refocusing and transition compression. It furthermore appears that functional implementations of structural operational semantics and of reduction semantics are related as well, also using CPS transformation and defunctionalization. This further relation provides an element of answer to Felleisen's conjecture that any structural operational semantics can be expressed as a reduction semantics: for deterministic languages, a reduction semantics is a structural operational semantics in continuation style, where the reduction context is a defunctionalized continuation. As the defunctionalized counterpart of the continuation of a one-step reduction function, a reduction context represents the rest of the reduction, just as an evaluation context represents the rest of the evaluation since it is the defunctionalized counterpart of the continuation of an evaluation function.