Skip to main content

A run-time representation of scheme record types

  • ANDREW W. KEEP (a1) and R. KENT DYBVIG (a2)

The Revised6 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.

Hide All
Bloch J. (2008) Effective Java (2nd edition) (The Java Series). 2nd ed.Upper Saddle River, NJ, USA: Prentice Hall PTR.
Briot J.-P. & Cointe P. (1989) Programming with explicit metaclasses in Smalltalk-80. In Conference Proceedings on Object-oriented Programming Systems, Languages, and Applications, OOPSLA '89. New York, NY, USA: ACM, pp. 419431.
Chambers C., Ungar D. & Lee E. (1989) An efficient implementation of SELF a dynamically-typed object-oriented language based on prototypes. In Conference Proceedings on Object-Oriented Programming Systems, Languages, and Applications, OOPSLA '89. New York, NY, USA: ACM, pp. 4970.
Clinger W. D. (2012) Larceny User's Manual.
DeMichiel L. G. & Gabriel R. P. (1987) The common lisp object system: An overview. In: Proceedings of the European Conference on Object-Oriented Programming, ECOOP '87. London, UK, UK: Springer-Verlag, pp. 151170.
Dybvig R. K. (2009) Chez Scheme Version 8 User's Guide. Cadence Research Systems.
Dybvig R. K., Eby D. & Bruggeman C. (1994 March) Don't stop the BIBOP: Flexible and Efficient Storage Management for Dynamically-Typed Lanugages. Tech. rept. TR400. Indiana University, Bloomington, IN.
Flatt M., Findler R. B. & PLT. (2012) The Racket Guide.
Ghuloum A. (2008 October). Ikarus Scheme User's Guide.
Goldberg A., & Robson D. (1983) Smalltalk-80: The Language and its Implementation. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc.
Google, Inc. (2012) Chrome V8: Design Elements.
Hickey R. (2012). Clojure.
Keep A. W. & Dybvig R. K. (2011) Ftypes: Structured foreign types. In Proceedings of the 2011 Workshop on Scheme and Functional Programming. Scheme '11.
Keep A. W. & Dybvig R. K. (2012) A sufficiently smart compiler for procedural records. In Proceedings of the 2012 Workshop on Scheme and Functional Programming. Scheme '12.
Kelsey R., Rees J. & Sperber M. (2008) The incomplete Scheme 48 reference manual for release 1.8.
Sperber M., Dybvig R. K., Flatt M., Van Straaten A., Findler R., & Matthews J. (2009) Revised6 report on the algorithmic language scheme. J. Funct. Program. 19 (Supplement S1), 1301.
Ungar D. & Smith R. B. (1987) Self: The power of simplicity. In Conference Proceedings on Object-oriented Programming Systems, Languages, and Applications, OOPSLA '87. New York, NY, USA: ACM, pp. 227242.
Waddell O. & Dybvig R. K. (1997) Fast and effective procedure inlining. In Proceedings of the Fourth International Symposium on Static Analysis, Lecture Notes in Computer Science, vol. 1302. Springer-Verlag, pp. 35–52.
Waddell O. & Dybvig R. K. (2004) A Lightweight Object System for Scheme. Unpublished manuscript.
Winkelmann F. L. & The Chicken Team. (2012) The CHICKEN User's Manual.
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? *