On Fri, Aug 21, 2009 at 11:42 PM, Stavenga, G.C. <g.c.stave...@uu.nl> wrote:
> > > Hi, I'm just started to learn Haskell. Coming from a programming contest > background (where it is important to be able to solve problems in a small > amount of code) I'm wondering what the best way is for simple IO. > > A typical input file (in a programming contest) is just a bunch of numbers > which you want to read one by one (sometimes interspersed with strings). In > C/C++ this is easily done with either scanf or cin which reads data > separated by spaces. In Haskell I have not found an equally satisfactionary > method. The methods I know of > > 1) Stay in the IO monad and write your own readInt readString functions. A > lot > of code for something easy. > > 2) Use interact together with words and put the list of lexemes in a State > monad and define getInt where at least you can use read. > > 3) Use ByteString.Char8 which has readInt (but I couldn't find a > readString). But one has to put it also in a State monad. > > I think that there must be standard function that can do this. What do > experienced Haskellers use? > I usually just whip up a quick parser using Text.ParserCombinators.Parsec<http://www.haskell.org/ghc/docs/latest/html/libraries/parsec/Text-ParserCombinators-Parsec.html> -- Sebastian Sylvan
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe