system f with type equality coercions
We introduce System F C , which extends System F with support for non-syntactic type equality. There are two main extensions: (i) explicit witnesses for type equalities, and (ii) open, non-parametric type functions, given meaning by top-level equality axioms. Unlike System F, F C is expressive enough to serve as a target for several different source-language features, including Haskell's newtype, generalised algebraic data types, associated types, functional dependencies, and perhaps more besides.
systems types support extensibility mean express feature haskell data association functional dependency advanced type features language parametric typed intermediate language