Abstract
Traditional denotational semantics assigns radically different meanings to one and the same phrase depending on the rest of the programming language. If the language is purely functional, the denotation of a numeral is a function from environments to integers. But, in a functional language with imperative control operators, a numeral denotes a function from environments and continuations to integers. This paper introduces a new format for denotational language specifications, extended direct semantics, that accommodates orthogonal extensions of a language without changing the denotations of existing phrases. An extended direct semantics always maps a numeral to the same denotation: the injection of the corresponding number into the domain of values. In general, the denotation of a phrase in a functional language is always a projection of the denotation of the same phrase in the semantics of an extended languageāno matter what the extension is. Based on extended direct semantics, it is also possible to construct interpreters for complete languages by composing interpreters for language fragments.
The paper is an extended and revised version of Rice Technical Report 90-105, āExtended Direct Semanticsā, January 1990.
The authors are partially supported by NSF grant CCR 91-22518. The second author is also partially supported by Arpa grant 8313, issued by ESD/AVS under Contract No. F196228-91-C-0168 under the direction of Robert Harper and Peter Lee.
Preview
Unable to display preview. Download preview PDF.
References
Allison, L.A Practical Introduction to Denotational Semantics. Cambridge Computer Science Texts 23. Cambridge University Press, Cambridge, England. 1986.
Allison, L. Direct semantics and exceptions define jumps and coroutines. Information Processing Letters31, 1989, 327ā330.
BjĆørner, D. and C. Jones. Formal Specification and Software Development. Prentice Hall International, 1982.
Blikle, A. and A. Tarlecki. Naive denotational semantics. In Proc. IFIP 9th World Computer Congress: Information Processing 83, North-Holland, Amsterdam, 1983, 345ā355.
Crank, E. and M. Felleisen. Parameter-passing and the lambdacalculus. In Proc. 18th ACM Symposium on Principles of Programming Languages, 1991, 233ā245.
Demichiel, L.G. Overview: The Common Lisp Object System. Lisp and Symbolic Computation1(3/4), 1988, 227ā244.
Dybvig, R. K.The Scheme Programming Language, Prentice-Hall, Englewood Cliffs, New Jersey, 1987.
Dybvig, R. K. and R. Hieb. Engines from continuations. Journal of Computer Languages (Pergamon Press) 14(2), 1989, 109ā124.
Felleisen, M. and D.P. Friedman. A reduction semantics for imperative higher-order languages. In Proc. Conference on Parallel Architectures and Languages Europe, Volume II: Parallel Languages. Lecture Notes in Computer Science 259. Springer-Verlag, Heidelberg, 1987, 206ā223.
Felleisen, M. and D.P. Friedman. A syntactic theory of sequential state. Theor. Comput. Sci.69(3), 1989, 243ā287. Preliminary version in: Proc. 14th ACM Symposium on Principles of Programming Languages, 1987, 314ā325.
Felleisen, M. and R. Hieb. The revised report on the syntactic theories of sequential control and state. Technical Report 100, Rice University, June 1989. Theor. Comput. Sci.102, 1992, 235ā271.
Felleisen, M., D.P. Friedman, E. Kohlbecker, and B. Duba. A syntactic theory of sequential control. Theor. Comput. Sci.52(3), 1987, 205ā237. Preliminary version in: Proc. Symposium on Logic in Computer Science, 1986, 131ā141.
Filinski, A. Representing monads. In Proc. 21st ACM Symposium on Principles of Programming Languages, 1994, to appear.
Friedman, D.P., C.T. Haynes, and E. Kohlbecker. Programming with continuations. In Program Transformations and Programming Environments, edited by P. Pepper. Springer-Verlag, Heidelberg, 1985, 263ā274.
Gordon, M.J.The Denotational Description of Programming Languages, Springer-Verlag, New York, 1979.
Haynes, C.T., D.P. Friedman, and M. Wand. Obtaining coroutines from continuations. Journal of Computer Languages (Pergamon Press) 11, 1986, 143ā153. Preliminary Version in Lisp and Functional Programming, 1984, Austin, TX.
Kanneganti, R., and R. Cartwright. What is a universal higher-order programming language? In Proc. International Conference on Automata, Languages, and Programming. Lecture Notes in Computer Science 700. Springer Verlag, Berlin, 1993, 682ā695.
Meyer, A.R. and M. Wand. Continuation semantics in typed lambdacalculi. Proc. Workshop Logics of Programs, Lecture Notes in Computer Science 193, Springer-Verlag, Heidelberg, 1985, 219ā224.
Milner, R., M. Tofte, and R. Harper. The Definition of Standard ML. The MIT Press, Cambridge, Massachusetts and London, England, 1990.
Moggi, E. An abstract view of programming languages. LFCS Report ECS-LFCS-90-113, University of Edinburgh, 1990.
Moggi, E. Notions of computations and monads. Inf. and Comp.93, 1991, 55ā92.
Moggi, E. Computational lambda-calculus and monads. In Proc. Fourth Symposium on Logic in Computer Science, 1989, 14ā23.
Mosses, P. Denotational Semantics. In Handbook of Theoretical Computer Science, North-Holland, Amsterdam, 1991, 575ā631.
Plotkin, G.TĻ as a Universal Domain. J. Comput. Syst. Sci.17, 1978, 209ā236.
Rees, J. and W. Clinger (Eds.). The revised3 report on the algorithmic language Scheme. SIGPLAN Notices 21(12), 1986, 37ā79.
Reynolds, J.C. On the relation between direct and continuation semantics. In Proc. International Conference on Automata, Languages and Programming, 1974, 141ā156.
Schmidt, D.A.Denotational Semantics: A Methodology for Language Development. Allyn and Bacon, Newton, Mass., 1986.
Scott, D. S. Domains for denotational semantics. In Proc. International Conference on Automata, Languages, and Programming, Lecture Notes in Mathematics 140, Springer Verlag, Berlin, 1982, 577ā613.
Scott, D.S. Data types as lattices. SIAM J. Comput.5(3), 1976, 522ā587.
Sethi R. and A. Tang. Constructing call-by-value continuation semantics. J. ACM27(3), 1980, 580ā597.
Sitaram, D. and M. Felleisen. Modeling continuations without continuations. In Proc. 18th ACM Symposium on Principles of Programming Languages, 1991, 185ā196.
Steele, G.L., Jr.Common LispāThe Language. Digital Press, 1984.
Steele, G.L., Jr. Building interpreters by composing monads. In Proc. 21st ACM Symposium on Principles of Programming Languages, 1994, to appear.
Stoy, J. The congruence of two programming language definitions. Theor. Comput. Sci.13, 1981, 151ā174.
Stoy, J.E.Denotational Semantics: The Scott-Strachey Approach to Programming Languages. The MIT Press, Cambridge, Mass. 1981.
Strachey, C. and C.P. Wadsworth. Continuations: A mathematical semantics for handling full jumps. Technical Monograph PRG-11, Oxford University Computing Laboratory, Programming Research Group, 1974.
Sussman, G.J. and G.L. Steele Jr. Scheme: An interpreter for extended lambda calculus. Memo 349, MIT AI Lab, 1975.
Wadler, P. The essence of functional programming. In Proc. 19th ACM Symposium on Principles of Programming Languages, 1992, 1ā14.
Wand, M. Continuation-based multiprocessing. In Proc. 1980 ACM Conference on Lisp and Functional Programming, 1980, 19ā28.
Wright, A. and M. Felleisen. A syntactic approach to type soundness. Technical Report 160. Rice University, 1991. Information and Computation, 1993, to appear.
Wright, A.K. and R. Cartwright. A practical soft type system for Scheme. Technical Report Rice CS 93-218. Rice University, December 1993.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
Ā© 1994 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Cartwright, R., Felleisen, M. (1994). Extensible denotational language specifications. In: Hagiya, M., Mitchell, J.C. (eds) Theoretical Aspects of Computer Software. TACS 1994. Lecture Notes in Computer Science, vol 789. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57887-0_99
Download citation
DOI: https://doi.org/10.1007/3-540-57887-0_99
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57887-1
Online ISBN: 978-3-540-48383-0
eBook Packages: Springer Book Archive