Skip to main content
    • Aa
    • Aa

An operational semantics for Scheme1


This paper presents an operational semantics for the core of Scheme. Our specification improves over the denotational semantics from the Revised5 Report on Scheme specification in four ways. First, it covers a larger part of the language, specifically eval, quote, dynamic-wind, and the top level. Second, it models multiple values in a way that does not require changes to unrelated parts of the language. Third, it provides a faithful model of Scheme's undefined order of evaluation. Finally, we have implemented our specification in PLT Redex, a domain-specific language for writing operational semantics. The implementation allows others to experiment with our specification and allows us to build a specification test suite, which improves our confidence that our system is a faithful model of Scheme. In addition to a specification of Scheme, this paper contributes three novel modeling techniques for Felleisen Hieb-style rewriting semantics. All three techniques are applicable to a wider range of problems than modeling Scheme, and they combine seamlessly in our model, suggesting that they would scale to complete models of other languages.

Linked references
Hide All

This list contains references from the content that can be linked to their source. For a full set of references and notes please see the PDF or HTML where available.

M. Felleisen , D. P. Friedman , E. Kohlbecker & B. Duba (1987) A syntactic theory of sequential control. Theor. Comput. Sci., 52 (3) 205237.

C. Flanagan & M. Felleisen (1999) The semantics of future and an application. J. Funct. Program. 9, 131.

M. Flatt , S. Krishnamurthi & M. Felleisen (1999) A programmer's reduction semantics for classes and mixins. Formal Syntax Semant. Java, 1523, 241269. Preliminary version appeared in Proceedings of Principles of Programming Languages, 1998. Revised version is Rice University technical report TR 97-293, June 1999.

C. T. Haynes & D. P. Friedman (1987) Embedding continuations in procedural objects. In ACM Transactions on Programming Languages and Systems, 9 (4), 582598.

I. Mason & C. Talcott (1991) Equivalence in functional languages with effects. J. Funct. Program. 1 (July), 287327.

D. P. Oliva , J. D. Ramsdell & M. Wand (1995) The VLISP verified prescheme compiler. Lisp and Symbol. Comput. 8 (1/2).

J. Reppy (1999) Concurrent Programming in ML. Cambridge University Press.

Recommend this journal

Email your librarian or administrator to recommend adding this journal to your organisation's collection.

Journal of Functional Programming
  • ISSN: 0956-7968
  • EISSN: 1469-7653
  • URL: /core/journals/journal-of-functional-programming
Please enter your name
Please enter a valid email address
Who would you like to send this to? *


Full text views

Total number of HTML views: 0
Total number of PDF views: 3 *
Loading metrics...

Abstract views

Total abstract views: 97 *
Loading metrics...

* Views captured on Cambridge Core between September 2016 - 27th June 2017. This data will be updated every 24 hours.