
It seems like an appropriate page for aske newbie questions, isnt it? I was reading through Haskell tutroial (http://www.di.uminho.pt/afp98/PAPERS/Tutorial.ps) and trying to do exercises from there. I'm stuck in the first exercise for "Classes" chapter (page 11). I need to define SetsAsLists as an instance of Set by supplying definitions for all Set methods, but definitions I wrote led me to adding additional constraints on "union" and "memeber" methods. Is it ok or it's possible to define "union" and "member" without using "==" ? Code follows: class Set s where empty :: s a isEmpty :: s a -> Bool singleton :: a -> s a union :: Eq a => s a -> s a -> s a member :: Eq a => a -> s a -> Bool choice :: s a -> (a, s a) data SetsAsLists a = SL [a] instance Set SetsAsLists where empty = SL [] isEmpty (SL []) = True isEmpty _ = False singleton x = SL [x] member x (SL ys) | isEmpty (SL ys) = False | otherwise = if x==head ys then True else member x (SL (tail ys)) union (SL []) (SL ys) = SL ys union (SL (x:xs)) (SL ys) | member x (SL ys) = union (SL xs) (SL (x:ys)) | otherwise = union (SL xs) (SL ys) -- Dmitry Astapov //ADEpt E-mail: adept@umc.com.ua GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D