The Revised 6 Report on the Algorithmic Language Scheme added a mechanism to the Scheme programming language for creating new record types procedurally. While many programming languages support user defined, structured data types, these are usually handled syntactically, so that the compiler can make choices at compile time about the memory layout of these data types. The procedural record types in Scheme, however, can be constructed at run time, making the efficient run-time representation of record types important to ensure good run-time performance. The run-time representation used in our implementation provides an extended model for record types allowing record types to represent foreign scalar data types, e.g., machine word integers, and allows the base record type to be extended to create non-R6RS record-type systems. This article describes our run-time representation for record types, how the garbage collector handles foreign scalar data types, and includes extended record type systems both for an object-oriented programming model and a representation of foreign structured data types.
[1]
Jean-Pierre Briot,et al.
Programming with explicit metaclasses in Smalltalk-80
,
1989,
OOPSLA 1989.
[2]
R. Kent Dybvig,et al.
Revised6 Report on the Algorithmic Language Scheme
,
2009
.
[3]
Joshua Bloch.
Effective Java (2nd Edition) (The Java Series)
,
2008
.
[4]
Linda G. DeMichiel,et al.
The Common Lisp Object System: An Overview
,
1987,
ECOOP.
[5]
R. Kent Dybvig,et al.
A sufficiently smart compiler for procedural records
,
2012,
Scheme '12.
[6]
Randall B. Smith,et al.
Self: The power of simplicity
,
1987,
OOPSLA 1987.
[7]
Craig Chambers,et al.
An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes
,
1989,
OOPSLA 1989.
[8]
David Robson,et al.
Smalltalk-80: The Language and Its Implementation
,
1983
.
[9]
R. Kent Dybvig,et al.
Fast and Effective Procedure Inlining
,
1997,
SAS.