The types-in-terms syntax (forall, ->, =>)
In accordance with GHC Proposal #281, the syntax of expressions must be extended with several constructs that previously could only occur at the type level:
- Function arrows:
a -> b - Multiplicity-polymorphic function arrows:
a %m -> b(under-XLinearTypes) - Constraint arrows:
a => b - Universal quantification:
forall a. b - Visible universal quantification:
forall a -> b
The purpose of the new syntax is to be used in required type arguments (via T2T). Using it in a free-standing expression is an error.