Control and utility libraries
The libraries in this subsection are as follows:
conduit
,io-streams
, andpipes
: General streaming libraries, that avoid problems with lazy IOlens
: Solving the "nested record update" problem in a "batteries included" fashionconvertible
: Conversions between types using a single function without information lossbasic-prelude
,classy-prelude
:Prelude
alternatives that encourage best practices in modern Haskellchunked-data
: Class abstractions to different builders, zipping, and reading and writing to files and handles
Streaming libraries are generally aimed at countering problems with lazy IO. Refer to Chapter 6, I/O and Streaming, for an in-depth discussion about problems with lazy IO and Haskell streaming libraries.
Using lenses
Lenses can be thought of as a generalization of getters and setters that compose well. A sore point of vanilla Haskell is nested record updates. The syntax is not very nice, for instance, this:
update rec new_c = rec { field_c = (field_c rec...