GADTs meet subtyping
Abstract
While generalized algebraic datatypes (\GADTs) are now considered well-understood, adding them to a language with a notion of subtyping comes with a few surprises. What does it mean for a \GADT parameter to be covariant? The answer turns out to be quite subtle. It involves fine-grained properties of the subtyping relation that raise interesting design questions. We allow variance annotations in \GADT definitions, study their soundness, and present a sound and complete algorithm to check them. Our work may be applied to real-world ML-like languages with explicit subtyping such as OCaml, or to languages with general subtyping constraints.
- Publication:
-
arXiv e-prints
- Pub Date:
- January 2013
- DOI:
- 10.48550/arXiv.1301.2903
- arXiv:
- arXiv:1301.2903
- Bibcode:
- 2013arXiv1301.2903S
- Keywords:
-
- Computer Science - Programming Languages
- E-Print:
- arXiv admin note: substantial text overlap with arXiv:1210.5935