Optimise nullary type constructor usage
During the compilation of programs GHC very frequently deals with
the Type
type, which is a synonym of TYPE 'LiftedRep
. This patch
teaches GHC to avoid expanding the Type
synonym (and other nullary
type synonyms) during type comparisons, saving a good amount of work.
This optimisation is described in Note [Comparing nullary type synonyms]
.
To maximize the impact of this optimisation, we introduce a few
special-cases to reduce TYPE 'LiftedRep
to Type
. See
Note [Prefer Type over TYPE 'LiftedPtrRep]
.
Closes #17958 (closed).
Edited by Ben Gamari