![]() |
CiteULike | ![]() |
spl's CiteULike | ![]() |
![]() |
|
![]() |
Register | ![]() |
Log in | ![]() |
Type-Indexed Rowsby: Mark Shields, Erik Meijer
In POPL '01: Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages (2001), pp. 261-275.
|
Reviews
[Write a review of this article]
Find related articles from these CiteULike users
Find related articles with these CiteULike tags
Posting History
AbstractRecord 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 XMλ, 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.
BibTeX record
RIS record