[Haskell-cafe] (no subject)

Jake McArthur jake.mcarthur at gmail.com
Sun Aug 23 00:49:53 EDT 2009


staafmeister wrote:
> Yes I know but there are a lot of problems requiring O(1) array updates
> so then you are stuck with IO again

Or use ST. Or use IntMap (which is O(log n), but n is going to max out 
on the integer size for your architecture, so it's really just O(32) or 
O(64), which is really just constant time).

And, realistically, very few problems actually require indexed access on 
a large scale like this.

> [parsing stuff]

As far as parsing is concerned, maybe you should look at Parsec. I know 
it sounds like overkill, but it's easy enough to use that it's quite 
lightweight in practice. Your example scenario:

     inputData :: Parser InputData
     inputData = many1 digit *> newline *> many (testCase <* newline)
         where testCase = many1 digit *> newline *> sepBy edge (char ' ')
               edge = liftA2 (,) (many nonspace <* char ' ')
                                 (read <$> digits)

- Jake


More information about the Haskell-Cafe mailing list