Type Functions in GHC

The main development
repo of GHC now includes an
extended version of the typed intermediate
language, Core, that includes a notion of type equality
coercions with the aim to support a whole range of
source language features that make essential use of
non-syntactic equality, such as GADTs, associated types,
functional dependencies, and even general type functions.

Type functions

We previously introduced an extension of type classes with
type-indexed data types, called associated data
types, and type functions, called associated type
synonyms. FC enables us to generalise
associated types to a general form of open type functions.