在“http://en.wikibooks.org/wiki/Haskell/Classes_and_types”的Class inheritance部分中,我读到“一个类可以从其他几个类继承:只需将所有祖先类放在=>之前的括号中。”
当"(...)=>"被描述为“继承”时,我感到困惑。就我所看到的,它只是一个类约束条件。它仅仅表示这个新定义的类(在例子中为Real)适用于已经是列出的类(Num和Ord)成员(具有实例的类型)。
简而言之,"(...)=>" 对于这个类的实例可能创建的类型所需要的特质起到了过滤器的作用,不会增强类或其实例。
我是否遗漏了什么?"(...)=>" 是否以某种方式从“父级”传递一些东西到“子级”?
当"(...)=>"被描述为“继承”时,我感到困惑。就我所看到的,它只是一个类约束条件。它仅仅表示这个新定义的类(在例子中为Real)适用于已经是列出的类(Num和Ord)成员(具有实例的类型)。
简而言之,"(...)=>" 对于这个类的实例可能创建的类型所需要的特质起到了过滤器的作用,不会增强类或其实例。
我是否遗漏了什么?"(...)=>" 是否以某种方式从“父级”传递一些东西到“子级”?
interface A extends B { ... }
,这意味着任何A
都必须是B
的一种,也就是说A
继承了B
所有的属性和方法。 - Tom Crockettclass Eq a => Ord a where ...
表示如果一种类型是可排序的,则它也必须具有相等关系--这是对任何可能的Ord
实例施加的要求。 "实现继承" 对应于在一个 instance 声明前放置限制条件。例如,instance Monad m => Applicative (WrappedMonad m)
使用Monad
的_功能_ 来实现Applicative
的_要求_。 - Tom Crockett