Hostname: page-component-7c8c6479df-94d59 Total loading time: 0 Render date: 2024-03-28T18:07:57.670Z Has data issue: false hasContentIssue false

A run-time representation of scheme record types

Published online by Cambridge University Press:  01 September 2014

ANDREW W. KEEP
Affiliation:
University of Utah and Cisco Systems Inc. (e-mail: akeep@cisco.com)
R. KENT DYBVIG
Affiliation:
Cisco Systems Inc. (e-mail: dyb@cisco.com)
Rights & Permissions [Opens in a new window]

Abstract

Core share and HTML view are not available for this content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

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.

Type
Articles
Copyright
Copyright © Cisco 2014 

References

Bloch, J. (2008) Effective Java (2nd edition) (The Java Series). 2nd ed.Upper Saddle River, NJ, USA: Prentice Hall PTR.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Clinger, W. D. (2012) Larceny User's Manual.Google Scholar
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.Google Scholar
Dybvig, R. K. (2009) Chez Scheme Version 8 User's Guide. Cadence Research Systems.Google Scholar
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.Google Scholar
Flatt, M., Findler, R. B. & PLT. (2012) The Racket Guide.Google Scholar
Ghuloum, A. (2008 October). Ikarus Scheme User's Guide.Google Scholar
Goldberg, A., & Robson, D. (1983) Smalltalk-80: The Language and its Implementation. Boston, MA, USA: Addison-Wesley Longman Publishing Co., Inc.Google Scholar
Google, Inc. (2012) Chrome V8: Design Elements.Google Scholar
Hickey, R. (2012). Clojure.Google Scholar
Keep, A. W. & Dybvig, R. K. (2011) Ftypes: Structured foreign types. In Proceedings of the 2011 Workshop on Scheme and Functional Programming. Scheme '11.Google Scholar
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.CrossRefGoogle Scholar
Kelsey, R., Rees, J. & Sperber, M. (2008) The incomplete Scheme 48 reference manual for release 1.8.Google Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
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.CrossRefGoogle Scholar
Waddell, O. & Dybvig, R. K. (2004) A Lightweight Object System for Scheme. Unpublished manuscript.Google Scholar
Winkelmann, F. L. & The Chicken Team. (2012) The CHICKEN User's Manual.Google Scholar
Submit a response

Discussions

No Discussions have been published for this article.