-
FlexibleContexts -
Удаление ограничения на тип-переменные в контекстах классов.
Расширение FlexibleContexts снимает ограничение Haskell 98, согласно которому ограничения типов класса (в любом месте их использования) должны иметь вид (класс тип-переменная) или (класс (тип-переменная тип1 тип2 … типn)). С FlexibleContexts такие сигнатуры типов являются корректными:
g :: Eq [a] => ... g :: Ord (T a ()) => ...
Это расширение не влияет на ограничения равенства в контексте экземпляра; они разрешены TypeFamilies или GADTs.
Обратите внимание, что FlexibleContexts затрагивает использование ограничений классов в сигнатурах типов и других контекстах. В отличие от этого, FlexibleInstances ослабляет аналогичное ограничение при объявлении нового экземпляра.