In most programming language implementations, the compiler has detailed knowledge of the representations of and operations on primitive data typed and data-type constructors. In SCHEMEXEROX, this knowledge is almost entirely external to the compiler, in ordinary, procedural user code. The primitive representations and operations are embodied in first-class “representation types” that are constructed and implemented in an abstract and high-level fashion. Despite this abstractness, a few generally-useful optimizing transformations are sufficient to allow the SCHEMEXEROX compiler to generate efficient code for the primitive operations, essentially as good as could be achieved using more contorted, traditional techniques.
[1]
Christian Queinnec,et al.
An open-ended data representation model for EU_LISP
,
1988,
LFP '88.
[2]
Carl H. Hauser,et al.
The portable common runtime approach to interoperability
,
1989,
SOSP '89.
[3]
Jonathan Rees.
The Scheme of things
,
1992
.
[4]
Paul Hudak,et al.
ORBIT: an optimizing compiler for scheme
,
1986,
SIGPLAN '86.
[5]
Jr. Guy L. Steele,et al.
Rabbit: A Compiler for Scheme
,
1978
.
[6]
Pavel Curtis,et al.
A module system for scheme
,
1990,
LISP and Functional Programming.