6.11.2. The context of a type signatureΒΆ

The FlexibleContexts extension lifts the Haskell 98 restriction that the type-class constraints in a type signature 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 ()) => ...

The flag FlexibleContexts also lifts the corresponding restriction on class declarations (Flexible contexts) and instance declarations (Relaxed rules for instance contexts).