On 12 September 2012 11:46, Eric Velten de Melo <ericvm...@gmail.com> wrote:
> Thanks for all the tips! The iteratees seem worth checking out. I'll
> see what I can do and will report back if I come up with something.
>
> Eric
>
> On 12 September 2012 03:03,  <o...@okmij.org> wrote:
>>
>>> I am currently trying to rewrite the Graphics.Pgm library from hackage
>>> to parse the PGM to a lazy array.
>>
>> Laziness and IO really do not mix.
>>
>>> The problem is that even using a lazy array structure, because the
>>> parser returns an Either structure it is only possible to know if the
>>> parser was successful or not after the whole file is read,
>>
>> That is one of the problems. Unexpected memory blowups could be
>> another problem. The drawbacks of lazy IO are well documented by now.
>>
>>> The behaviour I want to achieve is like this: I want the program when
>>> compiled to read from a file, parsing the PGM and at the same time
>>> apply transformations to the entries as they are read and write them
>>> back to another PGM file.
>>
>> Such problems are the main motivation for iteratees, conduits, pipes,
>> etc. Every such library contains procedures for doing exactly what you
>> want. Please check Hackage. John Lato's iteratee library, for example,
>> has procedure for handling sound (AIFF) files -- which may be very
>> big. IterateeM has the TIFF decoder -- which is incremental and
>> strict. TIFF is much harder to parse than PGM.
>>

It would be really awesome, though, if it were possible to use a
parser written in Parsec with this, in the spirit of avoiding code
rewriting and enhancing expressivity and abstraction.

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to