_            _    _        _         _
      /\ \         /\ \ /\ \     /\_\      / /\
      \_\ \       /  \ \\ \ \   / / /     / /  \
      /\__ \     / /\ \ \\ \ \_/ / /     / / /\ \__
     / /_ \ \   / / /\ \ \\ \___/ /     / / /\ \___\
    / / /\ \ \ / / /  \ \_\\ \ \_/      \ \ \ \/___/
   / / /  \/_// / /   / / / \ \ \        \ \ \
  / / /      / / /   / / /   \ \ \   _    \ \ \
 / / /      / / /___/ / /     \ \ \ /_/\__/ / /
/_/ /      / / /____\/ /       \ \_\\ \/___/ /
\_\/       \/_________/         \/_/ \_____\/
ghc-cassava 0.5.3.0
Dependencies: ghc-attoparsec@0.14.4 ghc-hashable@1.4.2.0 ghc-scientific@0.3.7.0 ghc-unordered-containers@0.2.19.1 ghc-vector@0.12.3.1 ghc-only@0.1 ghc-bytestring-builder@0.10.8.2.0 ghc-nats@1.1.2
Channel: guix
Location: gnu/packages/haskell-xyz.scm (gnu packages haskell-xyz)
Home page: https://github.com/haskell-hvr/cassava
Licenses: Modified BSD
Synopsis: CSV parsing and encoding library
Description:

cassava is a library for parsing and encoding RFC 4180 compliant comma-separated values (CSV) data, which is a textual line-oriented format commonly used for exchanging tabular data.

cassava's API includes support for:

  • Index-based record-conversion

  • Name-based record-conversion

  • Typeclass directed conversion of fields and records

  • Built-in field-conversion instances for standard types

  • Customizable record-conversion instance derivation via GHC generics

  • Low-level bytestring builders (see Data.Csv.Builder)

  • Incremental decoding and encoding API (see Data.Csv.Incremental)

  • Streaming API for constant-space decoding (see Data.Csv.Streaming)

Moreover, this library is designed to be easy to use; for instance, here's a very simple example of encoding CSV data:

>>> Data.Csv.encode [("John",27),("Jane",28)]
"John,27
Jane,28
"
Total results: 2