Announce: iteratee-0.1.0
I am pleased to announce the hackage release of iteratee-0.1.0. This library implements enumerators and iteratees as proposed by Oleg Kiselyov (http://okmij.org/ftp/Haskell/Iteratee/). Significant differences from his original code include: - Seeking is allowed within any monad; the specific RBIO monad is neither required nor provided. - Data buffers may be of arbitrary types as specified by the StreamChunk type class. This allows for user-provided buffer types (e.g. arrays, vectors, etc.). Instances are provided for lists and ByteStrings. This, in conjunction with seeking, allows for efficient processing of binary data in addition to text. - Cross-platform support. Currently this is slightly less efficient than the Posix operations, but should run on any system targeted by a Haskell compiler. Although basic I/O specific enumerators are provided, this library should allow seamless interoperation with user-provided iteratees and enumerators. I hope that this flexibility will encourage a much wider adoption of enumerator-based IO in the Haskell community. This library is experimental, and the API is subject to change if it will seem advantageous. Patches are welcome: the darcs repo is at http://inmachina.net/~jwlato/haskell/iteratee . Discussion and comments are also always welcome. I would like to acknowledge several individuals for their contributions and suggestions: Oleg Kiselyov Paulo Tanimoto Johan Tibell Cheers, John Lato
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0. This library implements enumerators and iteratees as proposed by Oleg Kiselyov (http://okmij.org/ftp/Haskell/Iteratee/). Significant differences from his original code include:
- Seeking is allowed within any monad; the specific RBIO monad is neither required nor provided. - Data buffers may be of arbitrary types as specified by the StreamChunk type class. This allows for user-provided buffer types (e.g. arrays, vectors, etc.). Instances are provided for lists and ByteStrings. This, in conjunction with seeking, allows for efficient processing of binary data in addition to text. - Cross-platform support. Currently this is slightly less efficient than the Posix operations, but should run on any system targeted by a Haskell compiler.
Here's the Hackage link for the lazy among us: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iteratee-0.1.0 Cheers, Johan
On Tue, Mar 10, 2009 at 2:57 PM, Johan Tibell <johan.tibell@gmail.com> wrote:
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0. This library implements enumerators and iteratees as proposed by Oleg Kiselyov (http://okmij.org/ftp/Haskell/Iteratee/). Significant differences from his original code include:
- Seeking is allowed within any monad; the specific RBIO monad is neither required nor provided. - Data buffers may be of arbitrary types as specified by the StreamChunk type class. This allows for user-provided buffer types (e.g. arrays, vectors, etc.). Instances are provided for lists and ByteStrings. This, in conjunction with seeking, allows for efficient processing of binary data in addition to text. - Cross-platform support. Currently this is slightly less efficient than the Posix operations, but should run on any system targeted by a Haskell compiler.
Here's the Hackage link for the lazy among us:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iteratee-0.1.0
Cheers,
Johan
Nice job, John! Please keep posting on your blog, so we can see your findings with audio processing and examples of iteratee. If Windows users are interested, I just cabal-installed it on Windows XP and the examples seem to run. Paulo
tanimoto:
On Tue, Mar 10, 2009 at 2:57 PM, Johan Tibell <johan.tibell@gmail.com> wrote:
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0. This library implements enumerators and iteratees as proposed by Oleg Kiselyov (http://okmij.org/ftp/Haskell/Iteratee/). Significant differences from his original code include:
- Seeking is allowed within any monad; the specific RBIO monad is neither required nor provided. - Data buffers may be of arbitrary types as specified by the StreamChunk type class. This allows for user-provided buffer types (e.g. arrays, vectors, etc.). Instances are provided for lists and ByteStrings. This, in conjunction with seeking, allows for efficient processing of binary data in addition to text. - Cross-platform support. Currently this is slightly less efficient than the Posix operations, but should run on any system targeted by a Haskell compiler.
Here's the Hackage link for the lazy among us:
http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iteratee-0.1.0
Cheers,
Johan
Nice job, John! Please keep posting on your blog, so we can see your findings with audio processing and examples of iteratee.
Would love to see performance/handle-scalability numbers, too!
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0.
Nice! I think it would be nice if you make Monoid a superclass of StreamChunk and remove the 'empty' and 'append' methods. I attached a darcs patch that does just that, adds the necessary Monoid instances and updates all code to work with Monoids. regards, Bas
On Wed, Mar 11, 2009 at 4:27 PM, Bas van Dijk <v.dijk.bas@gmail.com> wrote:
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0.
Nice!
I think it would be nice if you make Monoid a superclass of StreamChunk and remove the 'empty' and 'append' methods.
I attached a darcs patch that does just that, adds the necessary Monoid instances and updates all code to work with Monoids.
Thanks very much for this; it looks great. Incidentally, one of the items planned for iteratee is some restructuring of types, in particular the StreamChunk class. I would very much like to make further steps in this direction. John
On Wed, Mar 11, 2009 at 9:36 PM, John Lato <jwlato@gmail.com> wrote:
On Wed, Mar 11, 2009 at 4:27 PM, Bas van Dijk <v.dijk.bas@gmail.com> wrote:
On Tue, Mar 10, 2009 at 8:28 PM, John Lato <jwlato@gmail.com> wrote:
I am pleased to announce the hackage release of iteratee-0.1.0.
Nice!
I think it would be nice if you make Monoid a superclass of StreamChunk and remove the 'empty' and 'append' methods.
I attached a darcs patch that does just that, adds the necessary Monoid instances and updates all code to work with Monoids.
Thanks very much for this; it looks great. Incidentally, one of the items planned for iteratee is some restructuring of types, in particular the StreamChunk class. I would very much like to make further steps in this direction.
John
Here's another bigger and perhaps more controversial patch that generalizes the String error type to any type of error that is an instance of the Control.Monad.Error.Error class. So the main change is: -data (SC.StreamChunk c el) => StreamG c el = EOF | Error String | Chunk (c el) +data (SC.StreamChunk c el, Error err) => StreamG c el err = EOF | Error err | Chunk (c el) You should carefully review this patch because I made changes in parts of the code that I haven't tried to understand yet. I just made everything type check (which is usually sufficient in Haskell). regards, Bas
participants (5)
-
Bas van Dijk -
Don Stewart -
Johan Tibell -
John Lato -
Paulo Tanimoto