Haskell继承:它的遗传是什么?

gwi*_*man 10 inheritance haskell

这里是类继承中的http://en.wikibooks.org/wiki/Haskell/Classes_and_types,我读到"一个类可以继承其他几个类:只需将所有祖先类放在=>之前的括号中."

当"(...)=>"被描述为"继承"时,我很困惑.据我所知,它只是一个类约束.它只是说这个新定义的类(在示例中为Real)适用于已经列出的类(Num和Ord)的成员(具有实例)的类型.

总之,"(...)=>"我看来表现得像对于此类的实例可以创建的类型的所需品质的过滤器,并且不作用,以增加任一类或它的实例.

我错过了什么吗?是否有某种意义上"(...)=>"实际上从"父母"传递给"孩子"?

scl*_*clv 15

实际上,这意味着子类的所有成员都必须提供超类的所有方法.

因此,如在链接示例中,我们可以编写一个需要的方法Eq,但只给它一个Ord约束,并且这些Eq方法对我们来说是隐含的.

(请注意,继承可能是这个可怕的名词,因为它承载了太多的关联没有任何意义于我们而言的.不过,我想我也可以解释它.)

  • 在这个答案和@pelotom之间,我觉得我非常满意:"继承"这里指的是这个新类在所提到的类中继承了成员的_requirements_(通过实例).所以确实像Java中的接口继承一样. (4认同)