An Expressive Language of Signatures

Norman Ramsey and Kathleen Fisher and Paul Govereau

Current languages allow a programmer to describe an interface only by enumerating its parts, possibly also including another interface wholesale. Such languages cannot express relationships between interfaces, yet when independently developed software components are combined into a larger system, significant relationships arise naturally.

To address this shortcoming, we define, as a conservative extension of ML, a language for manipulating interfaces. Our language includes operations for adding, renaming, and removing components; for changing the type associated with a value; for making a manifest type abstract or vice versa; and for combining two interfaces. These operations can express useful relationships among interfaces. To define our language precisely, we present semantic objects that can represent interfaces, then give elaboration rules in terms of these objects.

Full paper

The paper is available as US Letter PostScript (303K) and US Letter TeX DVI (163K).