The categorical abstract machine
Proc. of a conference on Functional programming languages and computer architecture
Introduction to combinators and &lgr;-calculus
Introduction to combinators and &lgr;-calculus
The SCHEME programming language
The SCHEME programming language
An abstract machine for Lambda-terms normalization
LFP '90 Proceedings of the 1990 ACM conference on LISP and functional programming
POPL '90 Proceedings of the 17th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Head-order techniques and other pragmatics of lambda calculus graph reduction
Head-order techniques and other pragmatics of lambda calculus graph reduction
Elements of ML programming (ML97 ed.)
Elements of ML programming (ML97 ed.)
Efficient compilation of lazy evaluation
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Functional Programming and Parallel Graph Rewriting
Functional Programming and Parallel Graph Rewriting
A compiled implementation of strong reduction
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Reduction languages for reduction machines
ISCA '75 Proceedings of the 2nd annual symposium on Computer architecture
ISCA '82 Proceedings of the 9th annual symposium on Computer Architecture
Implementation of declarative languages
Implementation of declarative languages
Abstract Computing Machines
Hi-index | 0.00 |
This paper is about fully normalizing λ-calculusmachines that permit symbolic computations involving freevariables. They employ full-fledged β-reductions topreserve static binding scopes when substituting and reducing underabstractions. Abstractions and variables thus become truly firstclass objects: both may be freely substituted forλ-bound variables and returned as abstractionvalues. This contrasts with implementations of conventionalfunctional languages which realize a weakly normalizingλ-calculus that is capable of computing closedterms (or basic values) only.The two machines described in this paper are descendants of aweakly normalizing secd-machine that supports a namelessλ-calculus which has bound variable occurrencesreplaced by binding indices. Full normalization is achieved by afew more state transition rules that η-extendunapplied abstractions to full applications, inserting in ascendingorder binding indices for missing arguments. Updating these indicesin the course of performing β-reductions isaccomplished by means of a simple counting mechanism that inflictsvery little overhead. Both machines realize a head-order strategythat emphasizes normalization along the leftmost spine of aλ-expression. The simpler fn_secd-machine abides bythe concept of saving (and unsaving) on a dump structure machinecontexts upon each individual β-reduction. The moresophisticated fn_se(m)cd-machine performs what are calledβ-reductions-in-the-large that head-normalize entirespines in the same contexts. It also employs an additional tracestack Mthat facilitates traversing spines in search forand contracting redices.The paper also gives an outline of how the fn_se(m)cd-machinecan be implemented as a graph reducer.