Fine-grained interoperability through mirrors and contracts

Kathryn E. Gray*, Robert Bruce Findler, Matthew Flatt

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

12 Scopus citations


As a value flows across the boundary between interoperating languages, it must be checked and converted to fit the types and representations of the target language. For simple forms of data, the checks and coercions can be immediate; for higher order data, such as functions and objects, some must be delayed until the value is used in a particular way. Typically, these coercions and checks are implemented by an ad-hoc mixture of wrappers, reflection, and dynamic predicates. We observe that 1) the wrapper and reflection operations fit the profile of mirrors, 2) the checks correspond to contracts, and 3) the timing and shape of mirror operations coincide with the timing and shape of contract operations. Based on these insights, we present a new model of interoperability that builds on the ideas of mirrors and contracts, and we describe an interoperable implementation of Java and Scheme that is guided by the model.

Original languageEnglish (US)
Pages (from-to)231-245
Number of pages15
JournalACM SIGPLAN Notices
Issue number10
StatePublished - 2005


  • Contracts
  • Interoperability
  • Java
  • Mirrors
  • Scheme

ASJC Scopus subject areas

  • Software
  • Computer Graphics and Computer-Aided Design


Dive into the research topics of 'Fine-grained interoperability through mirrors and contracts'. Together they form a unique fingerprint.

Cite this