根据描述存在类型的此链接:
存在类型的值,如 ∃x。F(x) 是一个包含某个类型 x 和一个 F(x) 类型值的对。而像 ∀x 这样的多态类型的值。F(x) 是一个函数,它接受某个类型 x 并产生一个 F(x) 类型的值。在这两种情况下,类型都会关闭某个类型构造函数 F。
但是具有类型类约束的函数定义不与类型类实例配对。
不是forall f, exists Functor f, ...(因为很明显不是每个类型 f 都有 Functor f 的实例,因此exists Functor f ...不正确)。
它不是exists f and Functor f, ...(因为它适用于满足 f 的所有实例,而不仅仅是所选的实例)。
对我来说,它forall f and instances of Functor f, ...更像是 scala 的隐含参数而不是存在类型。
并根据此链接描述类型类:
[ ] 的类声明在
Eq逻辑上意味着存在一个类型 a ,该类型存在于该类型a -> a -> Bool中,或者,从 a 可以证明a -> a -> Bool(该类对此有两种不同的证明,具有名称==和/=)。这个命题具有存在性质(不要与存在类型混淆)
类型类和存在类型有什么区别,为什么它们都被认为是“存在的”?