
Hi all,
You are talking about parsing and data type, so I want to ask you a question
relating to my data type. I have a data types and a function as follows:
\begin{code}
data Type a = C1
{ x :: [String]
,y :: Type a}
| C2 {x1 :: String}
| C3 {y1 :: Bool} deriving Show
showType :: Type a -> String
showType (C2 a) = show a
showType (C3 a) = show a
showType (C1 a b) = show "(" ++ (show a) ++ (showType b) ++ (show ")")
r1 = C1 {
x = ["x","y"]
, y = C2{x1 = "x^2 + y^2 < 20"}
}
r2=C3{y1=False}
r3=C2{x1="x+y=z"}
\end{code}
--Result:
Main>showType r1
"\"(\"[\"x\",\"y\"]\"x^2 + y^2 < 20\"\")\""
Main>showType r2
"False"
Main>showType r3
"\"x+y=z\""
Now, I want to write a function to see the result in its original type, for
example :
input: "False"
output: False
input:"\"x+y=z\""
output:"x+y=z"
input:"\"(\"[\"x\",\"y\"]\"x^2 + y^2 < 20\"\")\""
output:(["x","y"]x^2 + y^2 < 20")
So, how I should write the function ? Do you have any idea about this ?
Thanks.
From: oleg@pobox.com
hugs /tmp/h.hs Haskell 98 mode: Restart with command line option -98 to enable extensions
Main> parseAny "4711" [(ValInt 4711,"")] Main> parseAny "\"4711\"" [(ValString "4711","")] Main> parseAny "[4711, 0]" [(ValList [ValInt 4711,ValInt 0],"")] Main> parseAny "[4711, 'a']" [(ValList [ValInt 4711,ValChar 'a'],"")] Main> parseAny "[\"hello world\"] x" [(ValList [ValString "hello world"]," x")] ______________________________ _________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe