[Haskell-cafe] (no subject)
aslatter at gmail.com
Mon Nov 28 23:20:54 CET 2011
On Mon, Nov 28, 2011 at 4:12 PM, Willem Obbens <dubl-u at hotmail.com> wrote:
> I get this error when I try to derive an instance of the Show typeclass:
> 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?
More information about the Haskell-Cafe