A model for I/O in equational languages with don't care non-determinism
Existing models for I/O in side-effect free languages focus on functional languages, which are usually based on a largely deterministic reduction strategy, allowing for a strict sequentialization of I/O operations. In concurrent logic programming languages a model is used which allows for don't care non-determinism. We apply this model to equational languages, which are closely related to functional languages, but exhibit don't care non-determinism. The semantics are formulated as constrained narrowing, a relation that contains the rewrite relation, and is contained in the narrowing relation.
We present constrained narrowing and some of its properties; a constructive method to transform conventional term rewriting systems (TRSs) to constrained narrowing systems (CNSs); and a discussion on requirements for an implementation.
KeywordsNormal Form Function Symbol Operational Semantic Functional Programming Functional Language
Unable to display preview. Download preview PDF.
- 1.P.M. Achten, J.H.G. van Groningen, and M.J. Plasmeijer. High-level specification of i/o in functional languages. In John Launchbury, editor, Proceedings Glasgow Workshop on Functional Programming. Springer-Verlag, 1992.Google Scholar
- 2.J.A. Bergstra, J. Heering, and P. Klint, editors. Algebraic Specification. ACM Press Frontier Series. The ACM Press in co-operation with Addison-Wesley, 1989.Google Scholar
- 3.N. Dershowitz and J.-P Jouannaud. Rewrite systems. In J. van Leeuwen, editor, Handbook of Theoretical Computer Science, Vol B., pages 243–320. Eisevier Science Publishers, 1990.Google Scholar
- 4.Michael Hanus. Combining lazy narrowing and simplification. In Proceedings of the International Conference on Programming Language Implementation and Logic Programming, PLILP '94, 1994.Google Scholar
- 5.Pieter H. Hartel, Marc Feeley, et al. Benchmarking implementations of functional languages with “pseudoknot”, a float-intensive benchmark. Journal of Functional Programming, 1996. Accepted for publication.Google Scholar
- 6.J.M. Hullot. Canonical forms and unification. In Proceedings of the 5th Conference on Automated Deduction, volume 87 of Lecture Notes in Computer Science, pages 318–334. Springer-Verlag, 1980.Google Scholar
- 7.Simon L. Peyton Jones and Philip Wadler. Imperative functional programming. In ACM Symposium on Principles Of Programming Languages (POPL), pages 71–84, 1993.Google Scholar
- 8.C. Kirchner, H. Kirchner, and J. Meseguer. Operational Semantics of OBJ-3. In T. Lepistö and A. Salomaa, editors, Proceedings of the Fifteenth International Conference on Automata, Languages and Programming, volume 317 of Lecture Notes in Computer Science, pages 287–301, 1988.Google Scholar
- 9.J.W. Klop. Term rewriting systems. In S. Abramsky, D. Gabbay, and T. Maibaum, editors, Handbook of Logic in Computer Science, Volume 2., pages 1–116. Oxford University Press, 1992.Google Scholar
- 10.P.J. Landin. A correspondence between algol 60 and church's lambda-notation: Parts i and ii. Communications of the ACM, 8(2,3):89–101,158–165, February and March 1965.Google Scholar
- 11.Aart Middeldorp, Satoshi Okui, and Tesuo Ida. Lazy narrowing: Strong completeness and eager variable elimination. In Proceedings of the 20th Colloquium on Trees in Algebra and Programming, Lecture Notes in Computer Science. Springer-Verlag, 1995.Google Scholar
- 12.E. Moggi. Computational lambda calculus and monads. In Logic in Computer Science. IEEE, 1989.Google Scholar
- 13.U.S. Reddy. Narrowing as the operational semantics of functional languages. In Proceedings of the IEEE International Symposium on Logic Programming, pages 1387–151, 1985.Google Scholar
- 14.E. Shapiro. The family of concurrent logic programming languages. Technical Report CS89-08, Department of Applied Mathematics and Computer Science, The Weizmann Institute of Science, May 1989.Google Scholar