В соответствии с документацией GHC, с учетом следующего объявления:
data Foo = forall a. MkFoo a (a -> Bool)
| Nil
то
MkFoo :: forall a. a -> (a -> Bool) -> Foo
Является (почти) изоморфным следующей декларации псевдо-Хаскелла
MkFoo :: (exists a . (a, a -> Bool)) -> Foo
Поэтому нет необходимости в отдельном ключе "Exist". Потому что:
Программисты Haskell могут спокойно думать о обычном универсальном количественный тип, указанный выше.
Но я не уверен, что это значит. Может кто-нибудь объяснить мне, почему мы можем использовать универсальный квантификатор для выражения экзистенциальной квантификации?