6.10.1. Loosening restrictions on class contexts¶
Remove the type-variable restriction on class contexts.
FlexibleContexts extension lifts the Haskell 98 restriction that
the type-class constraints (anywhere they appear) must have the form (class
type-variable) or (class (type-variable type1 type2 ... typen)). With
FlexibleContexts these type signatures are perfectly okay:
g :: Eq [a] => ... g :: Ord (T a ()) => ...
FlexibleContexts affects usages of class constraints,
in type signatures and other contexts. In contrast,
loosens a similar restriction in place when declaring a new instance.