6.11.2. The context of a type signature — Glasgow Haskell Compiler 9.0.0.20201227 User's Guide

# 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).