Type-Indexed Rows

Mark Shields and Erik Meijer. In Proceedings of the 28th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, London, England, pages 261-275, Jan 2001. [letter ps] [bibtex] [powerpoint slides]

Abstract

Record calculi use labels to distinguish between the elements of products and sums. This paper presents a novel variation, type-indexed rows, in which labels are discarded and elements are indexed by their type alone. The calculus, TIR, can express tuples, recursive datatypes, monomorphic records, polymorphic extensible records, and closed-world style type-based overloading. Our motivating application of TIR, however, is to encode the ``choice'' types of XML, and the ``unordered tuple'' types of SGML. Indeed, TIR is the kernel of the language XMLambda, a lazy functional language with direct support for XML types (``DTDs'') and terms (``documents'').

The system is built from rows, equality constraints, insertion constraints and constrained, or qualified, parametric polymorphism. The test for constraint satisfaction is complete, and for constraint entailment is only mildly incomplete. We present a type checking algorithm, and show how TIR may be implemented by a type-directed translation which replaces type-indexing by conventional natural-number indexing. Though not presented in this paper, we have also developed a constraint simplification algorithm and type inference system.

Note

A more detailed version of this paper appears as Part I of my thesis.