Haskellの型シグネチャは暗黙に量化される。言語オプション-XExplicitForAllが使われている場合、これが正確にどういう意味なのかをforallキーワードを使って言うことができる。例えば、 g :: b -> b は、次のものを意味している。 g :: forall b. (b -> b) この二つは同じものとして扱われる。 もちろん、forallはキーワードになる。型変数としてforallを使うことはもはやできないのである。 -XFlexibleContextsフラグを使うと、型シグネチャ中の型クラス制約が(class type-variable)または(class (type-variable type1 type2 ... typen))という形でなければならないという、Haskell 98の制限を撤廃する。-XFlexibleContextsが有効な場合、以下のような