
Hi, I'm playing around with typeclasses and trying to a feel on how you implement "inheritance" (not sure if that's the good word here) in Haskell. I have the following code that doesn't compile: class (Show a) => IPHost a where class (Show a) => IPMask a where class IPAddr a where host :: (IPHost b) => a -> b mask :: (IPMask b) => a -> b showIPAddr :: (IPAddr a) => a -> String showIPAddr a = (show . host $ a) ++ "/" ++ (show . mask $ a) ghci says: Net/IP.hs:23:23: Ambiguous type variable `b' in the constraint: `IPHost b' arising from a use of `host' at Net/IP.hs:23:23-26 Probable fix: add a type signature that fixes these type variable(s) Net/IP.hs:23:51: Ambiguous type variable `b1' in the constraint: `IPMask b1' arising from a use of `mask' at Net/IP.hs:23:51-54 Probable fix: add a type signature that fixes these type variable(s) What exactly does this error mean in this case? It's no tclear to me what needs to be made more specific. Am I approaching the problem in the wrong way? Any help is appreciated. Thanks, Patrick -- ===================== Patrick LeBoutillier Rosemère, Québec, Canada