FlexibleInstances

常规实例需要:

All instance types must be of the form (T a1 ... an)
where a1 ... an are *distinct type variables*,
and each type variable appears at most once in the instance head.

这意味着,例如,虽然你可以为 [a] 创建实例,但你无法为 [Int] 创建实例。FlexibleInstances 放松了:

class C a where

-- works out of the box
instance C [a] where

-- requires FlexibleInstances
instance C [Int] where