I tried printing the following tuple
(1,2,3,4,5,6)
which gave me the following error
ERROR - Cannot find "show" function for:
*** Expression : (1,2,3,4,5,6)
*** Of type : (Integer,Integer,Integer,Integer,Integer,Integer)
But if I try it with the following tuple
(1,2,3,4,5)
everything works like a charm.
My guess is that Haskell only defines Show
for tuples up to five elements (since a tuple of with 5 elements is apparently another type than a tuple with 6 elements). But somehow I am to stupid to find proof for that.
So my question is:
Why is this so, and how can I print a tuple with 6 elements (since it seems that I cannot put tuples in the head of an instance
definition)?
Edit: I'm using Hugs
Here you go. Include this instance of Show for a 6-tuple
-- Tuples -- for ref, def'n from the Prelude
{-
instance (Show a, Show b) => Show (a,b) where
showsPrec p (x,y) = showChar '(' . shows x . showChar ',' .
shows y . showChar ')'
instance (Read a, Read b) => Read (a,b) where
readsPrec p = readParen False
(\r -> [((x,y), w) | ("(",s) <- lex r,
(x,t) <- reads s,
(",",u) <- lex t,
(y,v) <- reads u,
(")",w) <- lex v ] )
-}
-- Other tuples have similar Read and Show instances
instance (Show a, Show b, Show c, Show d, Show e, Show f)
=> Show (a,b,c,d,e,f) where
showsPrec p (x1,x2,x3,x4,x5,x6) = showChar '(' . shows x1 . showChar ',' .
shows x2 . showChar ',' .
shows x3 . showChar ',' .
shows x4 . showChar ',' .
shows x5 . showChar ',' .
shows x6 . showChar ')'