Abstract The problem of the translation of λ-terms into combinators (bracket abstraction) is of great importance for the implementation of functional languages. In the literature there exist a lot of algorithms concerning this topic, each of which is based on a particular choice of a combinatory basis, its cardinality, and an abstraction technique. The algorithm presented here originated from a modification of the definition of abstraction given by Curry in 1930, and has the following interesting properties: 1. (i) it employs a potentially infinite basis of combinators, each of which depends on at most two parameters and is, therefore, directly implementable; 2. (ii) it gives compact code, introducing a number of basic combinators which is proportional to the size of the expression to be abstracted and invariant for one- and multi-sweep abstraction techniques; 3. (iii) it gives the result in the form RI M 1 … M n , where R is a regular combinator expressed as a composition of basic combinators, I is the identity combinator, and M 1 ,…, M n are the constant terms appearing into the expression subjected to the translation process. It appears that a slight modification of the algorithm yields a combinatory equivalent of Hughes' supercombinators.
[1]
R. J. M. Hughes,et al.
Super-combinators a new implementation method for applicative languages
,
1982,
LFP '82.
[2]
D. A. Turner.
Another Algorithm for Bracket Abstraction
,
1979,
J. Symb. Log..
[3]
Guy Durrieu,et al.
Mechanisms for efficient multiprocessor combinator reduction
,
1986,
LFP '86.
[4]
D. A. Turner,et al.
A new implementation technique for applicative languages
,
1979,
Softw. Pract. Exp..
[5]
Haskell B. Curry.
Grundlagen der kombinatorischen Logik
,
1930
.
[6]
J. Roger Hindley,et al.
Introduction to combinators and λ-calculus
,
1986,
Acta Applicandae Mathematicae.
[7]
Haskell B. Curry,et al.
Apparent Variables From the Standpoint of Combinatory Logic
,
1933
.
[8]
S. Kamal Abdali,et al.
An abstraction algorithm for combinatory logic
,
1976,
Journal of Symbolic Logic.
[9]
Richard Statman.
On Translating Lambda Terms into Combinators; The Basis Problem
,
1986,
LICS.
[10]
Haskell B. Curry,et al.
Some Additions to the Theory of Combinators
,
1932
.
[11]
Henk Barendregt,et al.
The Lambda Calculus: Its Syntax and Semantics
,
1985
.