[Haskell-cafe] Derived Read instance for types with infix
constructors (ghc 6.4.1)
avatar at hot.ee
Fri Aug 25 18:50:11 EDT 2006
the Haskell Report 10.4 says that
"The result of show is readable by read if all component types are readable"
however if I define a type like
data T = A | T `And` T deriving (Read, Show)
*Main> show $ A `And` A
"A And A"
*Main> (read "A And A") :: T
*** Exception: Prelude.read: no parse
In fact, I wasn't able to guess, what I should type so that the value
(A `And` A) gets parsed.
I have ghc 6.4.1. Looking into the code of the derived instance I see
that it expects Text.Read.Lex.lex to return (Symbol "And") for the
constructor. If I understand the code for lex correctly, then it parses
things as Symbol if they consist only of
How then do I read values of type T defined above? Thanks in advance
for any directions.
More information about the Haskell-Cafe