Functional Programming with Combinators

Combinators are shown to provide a very suitable basis for implementations of functional and symbolic computation in computer architecture. A powerful combinator reduction system is developed which meets programmers and machine requirements for (i) efficiency of representation and execution of symbolic algorithms, and (ii) availability of algebraic manipulation needed to analyse symbolic computations. An algebraic model is constructed to provide rigorous semantics for the system. The reduction language of the system aims at exposing efficient flows of data and fine-grain parallelism, and a computer architecture, which is proposed to run the system, utilizes both sequential and parallel processing modes in order to achieve maximum efficiency of symbolic computation. Finally, an implementation of the interpreter and functional simulator for the architecture is described.

[1]  S. Kleene $\lambda$-definability and recursiveness , 1936 .

[2]  John H. Williams,et al.  Formal Representations for Recursively Defined Functional Programs , 1981, International Colloquium on Formalization of Programming Concepts.

[3]  Peter M. Maurer,et al.  The Use of Combinators in Translating A Purely Functional Language to Low-Level Data-Flow Graphs , 1983, Comput. Lang..

[4]  John W. Backus,et al.  The Algebra of Functional Programs: Function Level Reasoning, Linear Equations, and Extended Definitions , 1981, ICFPC.

[5]  D. A. Turner Another Algorithm for Bracket Abstraction , 1979, J. Symb. Log..

[6]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

[7]  Simon L. Peyton Jones An investigation of the relative efficiencies of combinators and lambda expressions , 1982, LFP '82.

[8]  Elfriede Fehr,et al.  Inconsistencies of pure LISP , 1983 .

[9]  Haskell B. Curry Grundlagen der kombinatorischen Logik , 1930 .

[10]  Erwin Engeler A New Type of Models of Computation , 1977, MFCS.

[11]  Paul Hudak,et al.  Serial Combinators: "Optimal" Grains of Parallelism , 1985, FPCA.

[12]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[13]  Henk Barendregt,et al.  The Lambda Calculus: Its Syntax and Semantics , 1985 .

[14]  Giuseppe Longo,et al.  Gödel Numberings, Principal Morphisms, Combinatory Algebras: A Category-theoretic Characterization of Functional Completeness , 1984, MFCS.

[15]  Gyula A. Magó Data sharing in an FFP machine , 1982, LFP '82.

[16]  James W. Thatcher,et al.  More on Advice on Structuring Compilers and Proving them Correct , 1981, Theor. Comput. Sci..

[17]  A. C. Norman,et al.  SKIM - The S, K, I reduction machine , 1980, LISP Conference.

[18]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[19]  John H. Williams,et al.  On the Development of the Algebra of Functional Programs , 1982, TOPL.

[20]  Neil D. Jones,et al.  A fixed-program machine for combinator expression evaluation , 1982, LFP '82.

[21]  J. Darlington,et al.  Functional Programming and its Applications: An Advanced Course , 1982 .

[22]  John McCarthy,et al.  Recursive functions of symbolic expressions and their computation by machine, Part I , 1960, Commun. ACM.

[23]  Daniel P. Friedman,et al.  CONS Should Not Evaluate its Arguments , 1976, ICALP.

[24]  Pierre-Louis Curien,et al.  Categorical Combinators , 1986, Inf. Control..

[25]  Erwin Engeler,et al.  Equation in Combinatory Algebras , 1983, Logic of Programs.

[26]  E. Engeler Algebras and combinators , 1981 .

[27]  Albert R. Meyer,et al.  What is a Model of the Lambda Calculus? , 1982, Inf. Control..

[28]  A. C. Norman,et al.  Some practical methods for rapid combinator reduction , 1984, LFP '84.

[29]  S. Kamal Abdali,et al.  An abstraction algorithm for combinatory logic , 1976, Journal of Symbolic Logic.

[30]  F. Warren Burton A Linear Space Translation of Functional Programs to Turner Combinators , 1982, Inf. Process. Lett..

[31]  F. Warren Burton,et al.  Annotations to Control Parallelism and Reduction Order in the Distributed Evaluation of Functional Programs , 1984, TOPL.

[32]  Klaus J. Berkling Reduction languages for reduction machines , 1974, ISCA '75.

[33]  M. Bunder Natural Numbers In Illative Combinatory Logic. , 1985 .

[34]  Corrado Böhm,et al.  Combinatory foundation of functional programming , 1982, LFP '82.

[35]  Robert H. Halstead,et al.  MULTILISP: a language for concurrent symbolic computation , 1985, TOPL.