On Mon, Nov 28, 2011 at 4:12 PM, Willem Obbens <[email protected]> wrote: > 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 _______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe
