An implementation of syntax directed functional programming on nested-stack machines

This paper contributes to the field of functional programming languages. We investigate the call-by-name and call-by-need implementation of a restricted type of functional programming, calledsyntax directed functional programming; the target of this implementation is an abstract machine that is based on nested stacks. In fact, the technical kernel of this paper is a refinement of an automata theoretical result that, roughly speaking, investigates the well-known relationship “recursion = iteration + stack” in the framework of tree transducers. More precisely, in the underlying result the class of functions computed by total deterministic macro tree-to-string transducers with the call-by-name computation strategy is characterized by total deterministic checking-tree nested-stack transducers. Note that total deterministic macro tree-to-string transducers are term rewriting systems by means of which the reduction semantics of syntax directed functional programming languages can be described.

[1]  G. Huet,et al.  Equations and rewrite rules: a survey , 1980 .

[2]  Alfred V. Aho,et al.  The Theory of Parsing, Translation, and Compiling , 1972 .

[3]  William C. Rounds,et al.  Mappings and grammars on trees , 1970, Mathematical systems theory.

[4]  Joost Engelfriet,et al.  Modular Tree Transducers , 1991, Theor. Comput. Sci..

[5]  Joost Engelfriet,et al.  Iterated pushdown automata and complexity classes , 1983, STOC.

[6]  Paul Hudak,et al.  Conception, evolution, and application of functional programming languages , 1989, CSUR.

[7]  Bruno Courcelle,et al.  Attribute Grammars and Recursive Program Schemes II , 1982, Theor. Comput. Sci..

[8]  james w.thatcher,et al.  tree automata: an informal survey , 1974 .

[9]  Herbert Klaeren The SRDL Specification Experiment , 1981, Program Specification.

[10]  Alfred V. Aho,et al.  Nested Stack Automata , 1969, Journal of the ACM.

[11]  Rita Loogen,et al.  Graph-based Implementation of a Functional Logic Langugage , 1990, ESOP.

[12]  Herbert Klaeren,et al.  A Contructive Method for Abstract Algebraic Software Specification , 1984, Theor. Comput. Sci..

[13]  Jan Willem Klop,et al.  Term rewriting systems: a tutorial , 1987 .

[14]  Joost Engelfriet,et al.  SOME OPEN QUESTIONS AND RECENT RESULTS ON TREE TRANSDUCERS AND TREE LANGUAGES , 1980 .

[15]  Joost Engelfriet,et al.  Bottom-up and top-down tree transformations— a comparison , 1975, Mathematical systems theory.

[16]  Heiko Vogler Funktionale Programmierung mit primitiver Rekursion : formale Modelle zur Reduktionssemantik , 1990 .

[17]  Joost Engelfriet,et al.  Extended Macro Grammars and Stack Controlled Machines , 1984, J. Comput. Syst. Sci..

[18]  K. Indermark Functional compiler description , 1988 .

[19]  Rita Loogen Parallele Implementierung funktionaler Programmiersprachen , 1989, Informatik-Fachberichte.

[20]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[21]  Alfred V. Aho,et al.  Translations on a Context-Free Grammar , 1971, Inf. Control..

[22]  Joost Engelfriet,et al.  Pushdown Machines for the Macro Tree Transducer , 1986, Theor. Comput. Sci..

[23]  Joost Engelfriet,et al.  Macro Tree Transducers , 1985, J. Comput. Syst. Sci..

[24]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.