Actually, i'm wondering how to do exception handling and resource cleanup in iteratee, e.g. your `writer` iteratee, i found it difficult, because iteratee is designed to let enumerator manage resources.
On Sat, Jul 23, 2011 at 2:41 AM, Eric Rasmussen <ericrasmus...@gmail.com>wrote: > Hi everyone, > > A friend of mine recently asked if I knew of a utility to split a > large file (4gb in his case) into arbitrarily-sized files on Windows. > Although there are a number of file-splitting utilities, the catch was > it couldn't break in the middle of a line. When the standard "why > don't you use Linux?" response proved unhelpful, I took this as an > opportunity to write my first program using the enumerator package. > > If anyone has time, I'm really interested in knowing if there's a > better way to take the incoming stream and output it directly to a > file. The basic steps I'm taking are: > > 1) Data.Enumerator.Binary.take -- grabs the user-specified number of > bytes, then (because it returns a lazy ByteString) I use > Data.ByteString.Lazy.hPut to output the chunk > 2) Data.Enumerator.Binary.head -- after using take for the big chunk, > it inspects and outputs individual characters and stops after it > outputs the next newline character > 3) I close the handle that steps 1&2 used to output the data and then > repeat 1&2 with the next handle (an infinite lazy list of filepaths > like part1.csv, part2.csv, and so on) > > The full code is pasted here: http://hpaste.org/49366, and while I'd > like to get any other feedback on how to make it better, I want to > note that I'm not planning to release this as a utility so I wouldn't > want anyone to spend extra time performing a full code review. > > Thanks! > Eric > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > -- http://www.yi-programmer.com/blog/
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe