Towards Compatible and Interderivable Semantic Specifications for the
Scheme Programming Language, Part I: Denotational Semantics, Natural
Semantics, and Abstract Machines
Olivier Danvy July 2008 |
Abstract:
We derive two big-step abstract machines, a natural semantics,
and the valuation function of a denotational semantics based on the
small-step abstract machine for Core Scheme presented by Clinger at PLDI'98.
Starting from a functional implementation of this small-step abstract
machine, (1) we fuse its transition function with its driver loop, obtaining
the functional implementation of a big-step abstract machine; (2) we adjust
this big-step abstract machine so that it is in defunctionalized form,
obtaining the functional implementation of a second big-step abstract
machine; (3) we refunctionalize this adjusted abstract machine, obtaining the
functional implementation of a natural semantics in continuation style; and
(4) we closure-unconvert this natural semantics, obtaining a compositional
continuation-passing evaluation function which we identify as the functional
implementation of a denotational semantics in continuation style. We then
compare this valuation function with that of Clinger's original denotational
semantics of Scheme.
Available as PostScript, PDF, DVI. |