Abstract
Lazy narrowing has been proposed as the operational model of functional logic languages. This paper presents a new abstract machine which implements lazy narrowing. The core of this machine consists of a conventional stack based architecture like the one used for imperative languages. Almost orthogonal extensions of this core implement the different concepts of functional logic languages. This simplifies the machine design to a great deal and reduces the instruction set which has been particularly designed to support the application of standard code generation techniques. By its orthogonality, it is achieved that unused features introduce only minimal overhead. As a result, when performing ground term reduction the machine enjoys the same characteristics as efficient graph reduction machines.
Preview
Unable to display preview. Download preview PDF.
References
Hassan Ait-Kaci. The WAM: a real tutorial. Technical report, DEC research center, Paris, 1990.
Alfred V. Aho, Ravi Sethi, and Jeffrey D. Ullman. Compilers — Principles, Techniques and Tools. Addison-Wesley, 1986.
P.G. Bosco, C. Cecchi, and C. Moiso. An extension of WAM for K-LEAF: a WAM-based compilation of conditional narrowing. In Proceedings of the 6th Int. Conf. on Logic Programming, page ?, 1989.
P.G. Bosco, E. Giovanetti, and C. Moiso. Narrowing vs. SLD-resolution. J. of Theoretical Comp. Sci., Vol. 59, No. 1–2 pages 3–23, 1988.
Marco Bellia and Giorgio Levi. The Relation Between Logic and Functional Languages: a Survey. Journal of Logic Programming, 3(3), Oct. 1986.
J. Darlington, A.J. Field, and H. Pull. The unification of functional and logic languages. In D. DeGroot and G. Lindstrom, editors, Logic Programming, pages 37–70. Prentice-Hall, Engle-Wood Cliffs, New Jersey, 1986.
John Darlington and Yi-ke Guo. Narrowing and unification in functional programming — an evaluation mechanism for absolute set abstraction. In Int. Conf. on Term Rewriting. LNCS 355, 1989.
M. Fay. First-order unification in an equational theory. In “CADE” '79, pages 161–167, 1979.
Jon Fairbairn and Stuart Wray. TIM — A Simple Machine to Execute Supercombinators. In Conference on Functional Programming Languages and Computer Architecture, LNCS 274, 1987.
Michael Hanus. Compiling logic programs with equality. In PLILP, LNCS 348, Springer Verlag, pages 387–401, 1990.
Jean-Marie Hullot. Canonical forms and unification. In 5th Conf. on Automated Deduction. LNCS 87, 1980.
Hendrik C.R. Lock. The implementation of functional logic programming languages, April 1991. manuscript of a forthcoming dissertation, Universität Karlsruhe.
Rita Loogen. From reduction machines to narrowing machines. In CCPSD, TAPSOFT, LNCS 494, pages 438–454, 1991.
Erik Meijer. The Dump Environment Mix Machine. Informatics Department, University of Nijmegen, Nov. 1988. unpublished manuscript.
Juan J. Moreno-Navarro, Herbert Kuchen, Rita Loogen, and Mario Rodriguez-Artalejo. Lazy narrowing in a graph machine. In Conf. on Algebraic and Logic Programming, LNCS 463, 1990. also appeared as report N o 90-11 at RWTH Aachen.
Erik Meijer and Ross Patterson. Down with λ-lifting. University of Nijmegen and Imperial College, London, Sept. 1990. unpublished manuscript.
Juan J. Moreno-Navarro and Mario Rodriguez-Artalejo. BABEL: A functional and logic programming language based on constructor discipline and narrowing. In First Int. Workshop on Algebraic and Logic Programming, number 343 in LNCS, pages 223–232, 1988.
A. Mück. How to compile narrowing. In PLILP, LNCS 348, pages 16–39, 1990.
Simon L. Peyton-Jones and J. Salkild. The Spineless Tagless G-Machine. In workshop on Implementations of Lazy Functional Languages, Aspenas,Sweden Sept. 1988. appeared also in 1989 ACM Conf. on Functional Progr. Languages and Computer Architecture.
Uday S. Reddy. Narrowing as the operational semantics of functional languages. In IEEE Int. Symposium on Logic Programming, pages 138–151. IEEE, 1985.
Uday S. Reddy. Functional Logic Languages, Part 1. In J.H. Fasel and R.M. Keller, editors, Proceedings of a Workshop on Graph Reduction, Santa Fee, LNCS 279, pages 401–425, 1986.
Carlo Scharnhorst. Entwurf eines übersetzenden Narrowing-Systems basierend auf der WAM. Universität Karlsruhe, April 1991. Diplomarbeit.
D.H.D Warren. An abstract Prolog instruction set. Techn. Note 309, SRI International,Menlo Park,Calif., October 1983.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1991 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Chakravarty, M.M.T., Lock, H.C.R. (1991). The implementation of lazy narrowing. In: Maluszyński, J., Wirsing, M. (eds) Programming Language Implementation and Logic Programming. PLILP 1991. Lecture Notes in Computer Science, vol 528. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-54444-5_93
Download citation
DOI: https://doi.org/10.1007/3-540-54444-5_93
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-54444-9
Online ISBN: 978-3-540-38362-8
eBook Packages: Springer Book Archive