Proc. of the thirteenth spring school of the LITP on Combinators and functional programming languages
Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
ML with extended pattern matching and subtypes
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Type inference for record concatenatiOn and multiple inheritance
Proceedings of the Fourth Annual Symposium on Logic in computer science
Proceedings of the fifth international conference on Mathematical foundations of programming semantics
LFP '92 Proceedings of the 1992 ACM conference on LISP and functional programming
A polymorphic record calculus and its compilation
ACM Transactions on Programming Languages and Systems (TOPLAS)
Polymorphism and type inference in database programming
ACM Transactions on Database Systems (TODS)
POPL '01 Proceedings of the 28th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
PADL '00 Proceedings of the Second International Workshop on Practical Aspects of Declarative Languages
A typed representation for HTML and XML documents in Haskell
Journal of Functional Programming
Type inference for record concatenation and subtyping
Information and Computation
Type inference, principal typings, and let-polymorphism for first-class mixin modules
Proceedings of the tenth ACM SIGPLAN international conference on Functional programming
DREAM: A Component Framework for Constructing Resource-Aware, Configurable Middleware
IEEE Distributed Systems Online
Proceedings of the 2008 ACM SIGPLAN workshop on ML
Hi-index | 0.00 |
We show that any functional language with record extension possesses record concatenation for free. We exhibit a translation from the latter into the former. We obtain a type system for a language with record concatenation by composing the translation with type-checking in a language with record extension. We apply this method to a version of ML with a record extension and obtain an extension of ML with either asymmetric or symmetric concatenation. The latter extension is simple, flexible and has a very efficient type inference algorithm in practice. Concatenation together with removal of fields needs one more construct than extension of records. It can be added to the version of ML with record extension. However, many typed languages with record cannot type such a construct. The method still applies to them, producing type systems for record concatenation without removal of fields. Object systems also benefit of the encoding which shows that multiple inheritance does not actually require the concatenation of records but only their extension.