
On Mon, Nov 28, 2011 at 4:12 PM, Willem Obbens
Hello, I get this error when I try to derive an instance of the Show typeclass: Abc.hs:21:60: Couldn't match expected type `Vector' with actual type `[Point]' In the first argument of `show'', namely `xs' In the second argument of `(++)', namely `show' xs' In the second argument of `(++)', namely `", " ++ show' xs' Failed, modules loaded: none. Here's the faulty code: newtype Point = Point Int instance Show Point where show (Point a) = [chr $ a + 48]
data Vector = Vector [Point] instance Show Vector where show (Vector ys) = let show' (Vector [z]) = show z show' (Vector (x:xs)) = show x ++ ", " ++ show' xs show' (Vector []) = [] in "(" ++ show' ys ++ ")"
Here you're treating the value 'ys' as if its type was 'Vector', but its type is '[Point]'. Does that help? Antoine