Вики, которую вы цитируете, неверна или, по крайней мере, неточна.Объявление класса не является экзистенциальным предложением;это не какое-либо предложение, это просто определение стенографии.Затем можно перейти к предложению, используя это определение, если хотите, но само по себе это не так.Например,
class Eq a where (==) :: a -> a -> Bool
дает новое определение.Затем можно написать несуществующее, неуниверсальное суждение, используя его, скажем,
Eq ()
, которое мы могли бы «доказать», написав:
instance Eq () where () == () = True
Или можно написать
prop_ExistsFoo :: exists a. Eq a *> a
как экзистенциальное суждение.(На самом деле Хаскелл не имеет ни первого выражения exists
, ни (*>)
. Думайте о (*>)
как о двойственном по отношению к (=>)
- точно так же, как exists
является двойственным по отношению к forall
. Так, где (=>)
- этофункция, которая получает свидетельство об ограничении, (*>)
- это кортеж, который содержит свидетельство об ограничении, точно так же, как forall
- для функции, которая принимает тип, тогда как exists
- для кортежа, который содержит тип.) Мыможет «доказать» это утверждение, например,
prop_ExistsFoo = ()
Обратите внимание, что тип, содержащийся в кортеже exists
, равен ()
;доказательства, содержащиеся в кортеже (*>)
, - это экземпляр Eq ()
, который мы написали выше.Я уважал тенденцию Хаскелла делать здесь типы и экземпляры молчаливыми и неявными, чтобы они не появлялись в видимом тексте доказательства.
Точно так же мы могли бы сделать другое универсальное предложение из Eq
, написавчто-то вроде
prop_ForallEq :: forall a. Eq a => a
, которое нетривиально доказуемо, или
prop_ForallEq2 :: forall a. Eq a => a -> a -> Bool
, которое мы могли бы "доказать", например, написав
prop_ForallEq2 x y = not (x == y)
или вмного других способов.
Но объявление класса само по себе определенно не экзистенциальное предложение, и оно не имеет «экзистенциальной природы», что бы это ни значило.Вместо того, чтобы зацикливаться на этом и смущаться, пожалуйста, поздравьте себя с правильной маркировкой этого неверного утверждения как сбивающего с толку!