[Haskell-cafe] Usage of Read Class

Simeon Mattes simeon.mattes at gmail.com
Sun Mar 30 16:44:25 EDT 2008


Hello,

I would like to ask something that results in when I have the following
commands
data Color = Red | Green | Blue | Indigo | Violet deriving (Enum,Show,Read)
(read.show) x

<interactive>:1:1:
    Ambiguous type variable `a' in the constraint:
      `Read a' arising from a use of `read' at <interactive>:1:1-4
    Probable fix: add a type signature that fixes these type variable(s)

I also receive the same message with the following:

*Test > let x = Branch (Branch (Branch (Leaf 'a') (Leaf 'b')) (Leaf 'c') )
(Leaf 'd')
*Test > x
<<<'a'|'b'>|'c'>|'d'>
*Test > (read.show) x
<interactive>:1:1:
    Ambiguous type variable `a' in the constraint:
      `Read a' arising from a use of `read' at <interactive>:1:1-4
    Probable fix: add a type signature that fixes these type variable(s)


data Tree a = Leaf a | Branch (Tree a) (Tree a)
--type ShowS = String -> String
showsTree :: (Show a) => Tree a -> ShowS
showsTree (Leaf x) = shows x
showsTree (Branch l r) = ('<':).showsTree l . ('|':) . showsTree r . ('>':)

--type ReadS a = String -> [(a,String)]
readsTree :: (Read a) => ReadS (Tree a)
readsTree s = [(Branch l r, x) | ("<",t) <- lex s,
                                 (l,u) <-  readsTree t,
                                 ("|",v) <- lex u,
                                 (r,w) <- readsTree v,
                                 (">",x) <-lex w]
              ++
              [(Leaf x, t) | (x,t) <- read s]

instance Show a    => Show (Tree a) where
    showsPrec _ x = showsTree x
   
instance Read a => Read (Tree a) where
    readsPrec _ s = readsTree s


Why is this happen?  Maybe an example with a simple application of the Class
Read would be helpful.

Thanks

-- 
View this message in context: http://www.nabble.com/Usage-of-Read-Class-tp16381441p16381441.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.



More information about the Haskell-Cafe mailing list