Hostname: page-component-cd9895bd7-gxg78 Total loading time: 0 Render date: 2024-12-26T07:17:29.011Z Has data issue: false hasContentIssue false

Equivalence in functional languages with effects

Published online by Cambridge University Press:  07 November 2008

Ian Mason
Affiliation:
Department of Computer Science, Stanford University, Stanford, CA 94305-2095, USA
Carolyn Talcott
Affiliation:
Department of Computer Science, Stanford University, Stanford, CA 94305-2095, USA
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

Traditionally the view has been that direct expression of control and store mechanisms and clear mathematical semantics are incompatible requirements. This paper shows that adding objects with memory to the call-by-value lambda calculus results in a language with a rich equational theory, satisfying many of the usual laws. Combined with other recent work, this provides evidence that expressive, mathematically clean programming languages are indeed possible.

Type
Articles
Copyright
Copyright © Cambridge University Press 1991

References

Abramsky, S. 1990. The lazy lambda calculus. In Turner, D. A. (editor), Research Topics in Functional Programming. Addison-Wesley.Google Scholar
Agha, A. 1986. Actors: A Model of Concurrent Computation in Distributed Systems. MIT Press.CrossRefGoogle Scholar
Barendregt, H. 1981. The lambda calculus: its syntax and semantics. North-Holland.Google Scholar
Boehm, H.-J. 1985. Side effects and aliasing can have simple axiomatic descriptions. ACM TOPLAS, 7 (4).CrossRefGoogle Scholar
Demers, A. and Donahue, J. 1983. Making variables abstract: an equational theory for Russell. In 10th ACM Symposium on Principles of Programming Languages,ACM.CrossRefGoogle Scholar
Feferman, S. 1985. A theory of variable types. Revista Colombiana de Matématicas, 19.Google Scholar
Feferman, S. 1990. Polymorphic typed lambda-calculi in a type-free axiomatic framework. In Logic and Computation (vol. 104) Contemporary Mathematics. A.M.S.Google Scholar
Felleisen, M. 1987. The Calcului of Lambda-v-cs Conversion: A Syntactic Theory of Control and State in Imperative Higher-order Programming Languages. PhD thesis, Indiana University, USA.Google Scholar
Felleisen, M. and Hieb, R. 1989. The revised report on the syntactic theories of sequential control and state. Technical Report COMP TR89-100, Rice University, USA.Google Scholar
Guzmán, J. C. and Hudak, P. 1990. Single-threaded polymorphic lambda calculus. In Fifth Ann. Symposium on Logic in Computer Science.IEEE Press.Google Scholar
Hewitt, C. 1977. Viewing control structures as patterns of passing messages. J. Artificial Intelligence, 8 (3).CrossRefGoogle Scholar
Howe, D. 1989. Equality in the lazy lambda calculus. In Fourth Ann. Symposium on Logic in Computer Science.IEEE Press.Google Scholar
McCarthy, J., Abrahams, P., Edwards, D., Hart, T. and Levin, M. 1962. Lisp 1.5 Programmer's Manual. MIT Press.CrossRefGoogle Scholar
Landin, P. J. 1964. The mechanical evaluation of expressions. Computer J., 6: 308320.CrossRefGoogle Scholar
Lucassen, J. M. 1987. Types and Effects, towards the integration of functional and imperative programming. PhD thesis, MIT, USA.Google Scholar
Lucassen, J. M. and Gifford, D. K. 1988. Polymorphic effect systems. In Conf. record 16th Ann. ACM symposium on principles of programming languages, 4757, ACM.CrossRefGoogle Scholar
Mason, I. A. 1986. The Semantics of Destructive Lisp. PhD thesis, Stanford University, USA.Google Scholar
Mason, I. A. 1988. Verification of programs that destructively manipulate data. Sci. of Computer Programming, 10.CrossRefGoogle Scholar
Mason, I. A. and Talcott, C. L. 1989 a. Axiomatizing operational equivalence in the presence of side effects. In Fourth Ann. Symposium on Logic in Computer Science.IEEE Press.Google Scholar
Mason, I. A. and Talcott, C. L. 1989 b. Programming, transforming, and proving with function abstractions and memories. In Proc. 16th EATCS Colloquium on Automata, Languages, and Programming, Stresa, Italy. Volume 372 of Lecture Notes in Computer Science, Springer-Verlag.Google Scholar
Mason, I. A. and Talcott, C. L. 1989 c. A sound and complete axiomatization of operational equivalence between programs with memory. Technical Report STAN-CS-89-1250, Department of Computer Science, Stanford University, USA.Google Scholar
Mason, I. A. and Talcott, C. L. Inferring the equivalence of functional programs that mutate data. To appear (a) in Theor. Comput. Sci.Google Scholar
Mason, I. A. and Talcott, C. L. Syntactic semantics. In preparation.Google Scholar
Mason, I. A. and Talcott, C. L. Program transformation for configuring components. To appear (b) ACM Sigplan Symposium on Partial Evaluation and Semantics Based Program Manipulation. PEPM91.Google Scholar
Mason, I. A. and Talcott, C. L. Program transformation via constraint propagation. To appear (c).Google Scholar
Mason, I. A. and Talcott, C. L. 1990. Reasoning about programs with effects. In Programming Language Implementation and Logic Programming, PLILP'90. Volume 456 of Lecture Notes in Computer Science, Springer-Verlag.Google Scholar
Moggi, E. 1989. Computational lambda-calculus and monads. In Fourth Ann. Symposium on Logic in Computer Science.IEEE Press.Google Scholar
Moggi, E. 1990. An abstract view of programming languages. Technical Report ECS-LFCS-90- 113, Laboratory for foundations of computer science, University of Edinburgh, UK.Google Scholar
Morris, J. H. 1968. Lambda calculus models of programming languages. PhD thesis, Massachusetts Institute of Technology, USA.Google Scholar
Mosses, P. 1984. A basic abstract semantic algebra. In Semantics of data types, international symposium, Sophia-Antipolis, France. Volume 173 of Lecture Notes in Computer Science, Springer-Verlag.Google Scholar
Nelson, C. G. and Oppen, D. C. 1977. Fast decision procedures based on congruence closure. Technical Report STAN-CS-77-647, Department of Computer Science, Stanford University, USA.Google Scholar
Oppen, D. C. 1978. Reasoning about recursively defined data structures. Technical Report STAN-CS-78-678, Department of Computer Science, Stanford University, USA.CrossRefGoogle Scholar
Plotkin, G. 1975. Call-by-name, call-by-value and the lambda-v-calculus. Theor. Comput. Sci., 1.CrossRefGoogle Scholar
Reddy, U., Swarup, V. and Ireland, E. 1990. Assignments for applicative languages. Unpublished Manuscript, Department of Computer Science, University of Illinois, USA.Google Scholar
Reynolds, J. C. 1972. Definitional interpreters for higher-order programming languages. In Proc. ACM Nat. Convention, ACM.Google Scholar
Reynolds, J. C. 1989. Syntactic control of interference, II. Proc. 16th EATCS Colloquium on Automata, Languages, and Programming,Stresa, Italy. Volume 372 of Lecture Notes in Computer Science, Springer-Verlag.Google Scholar
Smith, S. F. From operational to denotational semantics. Technical Report 89-12, Department of Computer Science, The Johns Hopkins University, USA. To appear in the Proceedings of the 7th Conference on the Mathematical Foundations of Programming Semantics,MFPS91 LNCS Springer Verlag.Google Scholar
Steele, G. L. and Sussman, G. J. 1975. Scheme, an interpreter for extended lambda calculus. Technical Report 349, Massachusetts Institute of Technology, USA.Google Scholar
Talcott, C. L. 1985. The Essence of Rum: A Theory of the Intensional and Extensional Aspects of Lisp-Type Computation. PhD thesis, Stanford University, USA.Google Scholar
Talcott, C. L. 1989. Programming and proving function and control abstractions. Technical Report STAN-CS-89-1288, Stanford University Computer Science Department, USA.CrossRefGoogle Scholar
Talcott, C. L. 1990. A theory for program and data specification. Design and Implementation of Symbolic Computation Systems, DISCO'90. Volume 429 of Lecture Notes in Computer Science, Springer-Verlag.Google Scholar
Wadler, P. 1990. Linear types can change the world! In IFIP Working Conf. Programming Concepts and Methods, Sea of Gallilee, Israel.Google Scholar
Yonezawa, A. (editor). 1990. ABCL: An Object-Oriented Concurrent System. MIT Press.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.