> I haven't followed the thread carefully but why does the bird have to be a penguin?

A bird doesn't have to be a penguin :

instance (Penguin b) => Bird b where
     fly = -- fly method for penguins

Says that every Penguin is a Bird.
But thinking back about it, there is a problem when trying to define the method walk, because:

class Penguin p where
   walkPenguin :: ....

instance (Penguin b) => Bird b where
    fly = .....
    walk = walkPenguin

is kind of awful, because walk has to be duplicated. So, not the best way to go...


2011/7/19 Maciej Marcin Piechotka <uzytkownik2@gmail.com>
On Tue, 2011-07-19 at 01:13 +0200, Yves Parès wrote:
> Oh, I got it: You want to have:
>
> class Bird b where
>
> class Penguin p where
>
> instance (Penguin b) => Bird b where
>    fly = -- fly method for penguins
>

I haven't followed the thread carefully but why does the bird have to be
a penguin?

----------

As a side note - I agree with Christopher Done that the answer is that
you shouldn't require for bird to fly.

Regards

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe