This monday at 7pm we have PLT guru Lee Kitching talking about Pipes.

Pipes is a Haskell library based on a composable push/pull streaming abstraction.

Laziness is crucial for defining reusable algorithms which can be freely composed together, and most modern languages define an abstractions for lazy sequences such as Java 8 Streams and IEnumerable in C#. However laziness is problematic when streams are derived from resources such as file handles which are consumed incrementally and require prompt cleanup since streams hide the nature of the source from the consumer. This presents a risk of resource leaks if clients fail to consume the entire stream, or inefficient use of resources if the problem is avoided by consuming the entire stream eagerly.

This talk describes the abstraction defined by the Pipes library and demonstrates how it can be used to define reusable streaming components.