Results 1 -
4 of
4
Explicit Cyclic Substitutions
, 1993
"... In this paper we consider rewrite systems that describe the lambda-calculus enriched with recursive and non-recursive local definitions by generalizing the `explicit substitutions' used by Abadi, Cardelli, Curien, and Lévy [1] to describe sharing in lambda-terms. This leads to `explicit cyclic subst ..."
Abstract
-
Cited by 22 (2 self)
- Add to MetaCart
In this paper we consider rewrite systems that describe the lambda-calculus enriched with recursive and non-recursive local definitions by generalizing the `explicit substitutions' used by Abadi, Cardelli, Curien, and Lévy [1] to describe sharing in lambda-terms. This leads to `explicit cyclic substitutions' that can describe the mutual sharing of local recursive definitions. We demonstrate how this may be used to describe standard binding constructions (let and letrec) -- directly using substitution and fixed point induction as well as using `small-step' rewriting semantics where substitution is interleaved with the mechanics of the following beta-reductions. With this we hope to contribute to the synthesis of denotational and operational specifications of sharing and recursion.
Graph-based Operational Semantics of a Lazy Functional Language
- Term Graph Rewriting: Theory and Practice, chapter 22
"... Machine [Car83], the G-machine [Joh84, BPJR88], Clean [BvEvLP87, KSvEP91], and DACTL [Ken88, GKS89]. All of these can be perceived as notations for algorithms that describe how graphs may be used to model the evaluation of the implemented language. Such notations have the advantage that they are dir ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Machine [Car83], the G-machine [Joh84, BPJR88], Clean [BvEvLP87, KSvEP91], and DACTL [Ken88, GKS89]. All of these can be perceived as notations for algorithms that describe how graphs may be used to model the evaluation of the implemented language. Such notations have the advantage that they are directly executable. However, they are often not very readable since all the details of the implementation have to be present in the specification. On the other hand, the idea has also been used in attempts to build models of functional languages and to prove properties of such models directly. Again starting from [Wad71] such attempts are naturally focused on models of the -calculus---a 2 We will use the traditional word "redex" (reducible expression) rather than some abbreviation of "reducible subgraph" even though we will always refer to the latter. GRAPH-BASED OPERATIONAL SEMANTICS OF A LAZY FUNCTIONAL LANGUAGE 239 rather large are of research, so we will just mention [Sta78] and [Lam90...
Compilation of Head and Strong Reduction
- In ESOP
, 1994
"... : Functional language compilers implement only weak-head reduction. However, there are cases where head normal forms or full normal forms are needed. Here, we study how to use cps conversion for the compilation of head and strong reductions. We apply cps expressions to a special continuation so that ..."
Abstract
- Add to MetaCart
: Functional language compilers implement only weak-head reduction. However, there are cases where head normal forms or full normal forms are needed. Here, we study how to use cps conversion for the compilation of head and strong reductions. We apply cps expressions to a special continuation so that their head or strong normal form can be obtained by the usual weak-head reduction. We remain within the functional framework and no special abstract machine is needed. Used as a preliminary step our method allows a standard compiler to evaluate under l's. Key-words: l-calculus, Cps conversion, Head and Strong Reduction, Compilation (Rsum : tsvp) email: fradet@irisa.fr Compilation de la rduction forte et de tte Rsum : Les compilateurs de langages fonctionnels ne mettent en oeuvre que la rduction faible. En certaines occasions il est ncessaire d'valuer des formes normales ou des formes normales de tte. Nous tudions ici comment la transformation cps ("continuation passing style") peut tre...
Compilation of Head and Strong Reduction
- In ESOP
, 1994
"... Functional language compilers implement only weak-head reduction. However, there are cases where head normal forms or full normal forms are needed. Here, we study how to use cps conversion for the compilation of head and strong reductions. We apply cps expressions to a special continuation so tha ..."
Abstract
- Add to MetaCart
Functional language compilers implement only weak-head reduction. However, there are cases where head normal forms or full normal forms are needed. Here, we study how to use cps conversion for the compilation of head and strong reductions. We apply cps expressions to a special continuation so that their head or strong normal form can be obtained by the usual weak-head reduction. We remain within the functional framework and no special abstract machine is needed. Used as a preliminary step our method allows a standard compiler to evaluate under l's. 1 Introduction Functional language compilers consider only weak-head reduction and the evaluation stops when a weak head normal form (whnf), that is a constant or a l-abstraction, is reached. In practice, whnf's are considered sufficient because printable results belong to basic domains. However, there are cases where one would like to reduce under l's to get head normal forms (hnf) or even (strong) normal forms (nf). Specifically, h...

