[Haskell-cafe] (no subject)
Brent Yorgey
byorgey at seas.upenn.edu
Mon Nov 28 23:48:58 CET 2011
On Mon, Nov 28, 2011 at 04:20:54PM -0600, Antoine Latter wrote:
> On Mon, Nov 28, 2011 at 4:12 PM, Willem Obbens <dubl-u at hotmail.com> 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 ++ ")"
You've made show' :: Vector -> String, but I'm guessing you actually
want to make it show' :: [Point] -> String; i.e. get rid of the
Vector constructors in the show' patterns.
-Brent
More information about the Haskell-Cafe
mailing list