
Hi all,
On Tue, Dec 8, 2009 at 5:29 AM, Heinrich Apfelmus
Joe Fredette wrote:
My suggestion would be to look into writing a parser (via parsec) to handle this. Parsec is fairly easy to learn, and since your data is a pretty simple format, the parser won't be hard to write.
While I'm all for using a proper parser, Brent Pedersen notes that his data will have millions of rows, so that Parsec is likely to run into memory problems.
I think something along the lines of
import Data.ByteString.Lazy.Char8 as B
parse = map (zipWith ($) formats . B.split '\t') . B.lines where formats = [str, str, int, int, int, int, int, int, int, float, float] int = fst . fromJust . readInt float = \s -> read (unpack s) :: Double str = id
I've been looking at this example and I can't figure it out how it works. Seems to me that "formats" is a list of functions that return different types. How does this work? Patrick
will do just fine. (The implementation of float is a kludge, I think there's something on hackage for that, though?)
Regards, Heinrich Apfelmus
-- http://apfelmus.nfshost.com
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners
-- ===================== Patrick LeBoutillier Rosemère, Québec, Canada