S. Alexander Jacobson wrote:
My point is that I am reading in name/value pairs
and once I know the name, I know the type of the
value, but I don't want to have to pass that
information programatically to the point in the
code where I am doing the read.

OK, I see... I don't know the exact syntax you are using (e.g. how are the strings terminated?), but "reads" is still useful:

   readIS :: ReadS (Either Integer String)
   readIS s = take 1 $
              [ (Left  x, t) | (x, t) <- reads s ] ++
              [ (Right x, t) | (x, t) <- lex   s ]

Then we have:

   Main> readIS "123blah"
   [(Left 123,"blah")]
   Main> readIS "blah123"
   [(Right "blah123","")]
   Main> readIS ""
   [(Right "","")]
   Main> readIS "foo bar"
   [(Right "foo"," bar")]

If you have only simple parsing tasks and are not looking for extreme
performance, the Read class is a good choice. Otherwise you should
probably have a look at the Parsec package which comes with Hugs and GHC:

http://www.haskell.org/ghc/docs/latest/html/libraries/parsec/Text.ParserCombinators.Parsec.html

or Happy:

http://haskell.org/happy/

Cheers,
   S.

_______________________________________________
Haskell-Cafe mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to