Method contexts
Hannah Schroeter
uk1o at rz.uni-karlsruhe.de
Sat Feb 10 13:04:33 EST 2001
Hello!
On Sat, Feb 10, 2001 at 04:15:46PM +0000, Marcin 'Qrczak' Kowalczyk wrote:
> Sat, 10 Feb 2001 16:36:52 +0100, Hannah Schroeter <uk1o at rz.uni-karlsruhe.de> pisze:
> > Somehow I don't understand this. Eq a is required for Member [a] a,
> It is not required for Member [a] a, but for the member method.
> class Member c k where
> member :: Eq k => c -> k -> Bool
> instance Member [a] a where
> member = flip elem
> The above class and instance should be legal. Note that Member [a] a
> holds for any a, and the type of member is
> member :: (Member c k, Eq k) => c -> k -> Bool
Okay. However, you can use only Member [a] a with Eq a, anyway, in
this case. So you can equally say:
class Eq k => Member c k where
member :: c -> k -> Bool
class Seq c k where -- no member superclass here
list :: c -> [k]
I don't see any sense in having Member as superclass of Seq in
such a constellation anyway.
Kind regards,
Hannah.
More information about the Glasgow-haskell-bugs
mailing list