Understanding inheritance

I think you're headed down a path that's only going to cause you confusion.
You shouldn't think in OO terms like sub and super classes. Each class is
its own thing, they aren't sub and super classes in the OO sense. A class
my have a constraint applied to it such that any type that is an instance
of that class, must also be an instance of one or more other classes. That
constraint is what allows you to use functions that belong to other classes
inside of default function definitions. Semantically this behaves much like
inheritance in an OO language, however functionally it's very different.
On Dec 1, 2013 7:08 PM, "Patrick Browne"
Hi, In the example below does the concept of inheritance only apply to classes and not instances? By inheritance I mean that a method in a sub-class can use a method from the super-class but not vice versa. Would the inclusion of instance contexts such as 'instance (Eq a, Show b) => MyClass a b' apply such inheritance semantics between LHS => RHS of instances? My current misunderstandings are in the comments. Thanks, Pat -- Any instance of SUPER must define the super method. The super method definition may use any function in scope on the RHS of equations. -- If the default method is defined in the class it may use any method in scope except those from the sub-class class SUPER a where super :: a -> a -- Any instance of SUB must define sub. The sub method definition may use super or any function in scope on the RHS of equations class SUPER a => SUB a where sub :: a -> a
-- This instance defines super and can use sub because sub it is defined and is in scope instance SUPER Int where super n = 1 + (sub n)
-- This instance defines sub instance SUB Int where sub n = 6 + n
-- The Char instances differs from the Int instances in that the SUB uses super. instance SUPER Char where super n = 's'
-- The use of super here because it is defined and is in scope. instance SUB Char where sub n = super n
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

Hi, From perspective of a haskell beginner coming from OOP: Tt's like interfaces. If a class supports interface X, then it must also supports interface Y. That's all. It's a simple thing, but can be complicated if you will try to understand it in OOP terms. Emanuel
participants (3)
-
Emanuel Koczwara
-
Kyle Murphy
-
Patrick Browne