exists a. a -> a
это пара из типа и функции a -> a
имея такую пару, нельзя подставить произвольный "a", у тебя уже есть конкретный
это как
data X = forall a. X (a -> a)
f :: X -> b -> b
f (X g) x = g x -- так нельзя, мы не знаем, тот ли там тип в X, что наш b