Cassava support for the streaming ecosystem

Version on this page:
LTS Haskell 20.25:
Stackage Nightly 2022-11-17:
Latest on Hackage:

See all snapshots streaming-cassava appears in

MIT licensed by Ivan Lazar Miljenovic
This version can be pinned in stack with:streaming-cassava-,1739

Module documentation for


Hackage Build Status

cassava support for the streaming ecosystem

This library allows you to easily stream CSV data in and out. You can do so using both “plain” record-based (with optional header support) or name-based (header required to determine ordering) encoding/decoding.

All encoding/decoding options are supported, it’s possible to automatically add on default headers and you can even choose whether to fail on the first parse error or handle errors on a row-by-row basis.

Errors with readFile

A common use-case is to stream CSV-encoded data in from a file. You may be tempted to use readFile from streaming-bytestring to obtain the file contents, but if you do you’re likely to run into exceptions such as hGetBufSome: illegal operation (handle is closed).

The recommended solution is to use the streaming-with package for the IO aspects. You can then write something like:

withBinaryFileContents \"myFile.csv\" $
  . 'decodeByName'


Revision history for streaming-cassava – 2018-01-23

  • Bump dependency on streaming.

  • Document what to do with readFile errors. – 2017-06-30

  • First version.