GADTs Meet Subtyping
From MaRDI portal
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.
Recommendations
Cited in
(7)- Dualizing generalized algebraic data types by matrix transposition
- Ambivalent types for principal type inference with GADTs
- Ghostbuster: a tool for simplifying and converting GADTs
- Safe zero-cost coercions for Haskell
- Characterizing functions mappable over GADTs
- A lean specification for gadts: System F with first-class equality proofs
- Transposing G to \(\text{C}^{\sharp}\): expressivity of generalized algebraic data types in an object-oriented language
This page was built for publication: GADTs Meet Subtyping
Report a bug (only for logged in users!)Click here to report a bug for this page (MaRDI item Q5326307)