How to make ad-hoc polymorphism less ad hoc
POPL '89 Proceedings of the 16th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A record calculus based on symmetric concatenation
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inference for record concatenation and multiple inheritance
Information and Computation
Typing record concatenation for free
POPL '92 Proceedings of the 19th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Type inclusion constraints and type inference
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Type inference for records in natural extension of ML
Theoretical aspects of object-oriented programming
Intersection and union types: syntax and semantics
Information and Computation
Qualified types: theory and practice
Qualified types: theory and practice
A polymorphic record calculus and its compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Simplifying and improving qualified types
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Design of the programming language FORSYTHE
ALGOL-like Languages, Volume 1
Type inference with constrained types
Theory and Practice of Object Systems - Special issue on foundations of object-oriented languages
Haskell and XML: generic combinators or type-based translation?
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Implicit parameters: dynamic scoping with static types
Proceedings of the 27th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Typechecking for XML transformers
PODS '00 Proceedings of the nineteenth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
Introduction to set constraint-based program analysis
Science of Computer Programming
Regular expression types for XML
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
The Java Language Specification
The Java Language Specification
An Algorithm for General Set Unification and Its Complexity
Journal of Automated Reasoning
An ideal model for recursive polymorphic types
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Static types for dynamic documents
Static types for dynamic documents
Intersection types and bounded polymorphism
Mathematical Structures in Computer Science
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
XDuce: A statically typed XML processing language
ACM Transactions on Internet Technology (TOIT)
A typed representation for HTML and XML documents in Haskell
Journal of Functional Programming
Type inference for record concatenation and subtyping
Information and Computation
Strongly typed heterogeneous collections
Haskell '04 Proceedings of the 2004 ACM SIGPLAN workshop on Haskell
Parametric polymorphism for XML
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Regular expression types for XML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Customizing an XML-Haskell data binding with type isomorphism inference in Generic Haskell
Science of Computer Programming
Confessions of a used programming language salesman
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
XHaskell --- Adding Regular Expression Types to Haskell
Implementation and Application of Functional Languages
Proceedings of the 2009 ACM symposium on Applied Computing
Parametric polymorphism for XML
ACM Transactions on Programming Languages and Systems (TOPLAS)
Revealing the X/O impedance mismatch: changing lead into gold
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Eliminating the XML overhead in embedded XML languages
Proceedings of the 28th Annual ACM Symposium on Applied Computing
Extensible effects: an alternative to monad transformers
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Programming errors in traversal programs over structured data
Science of Computer Programming
Hi-index | 0.00 |
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 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.