Data frames For working with tabular data files

Version on this page:0.1.9
LTS Haskell 9.13:0.1.9
Stackage Nightly 2017-11-18:
Latest on Hackage:

User-friendly, type safe, runtime efficient tooling for working with tabular data deserialized from comma-separated values (CSV) files. The type of each row of data is inferred from data, which can then be streamed from disk, or worked with in memory.



  • Refactored to use the CoRec type provided by vinyl >= 0.6.0

  • Fixed bug in typing mostly-numeric columns Such columns must be represented as Text. Previously, we strove a bit too hard to avoid falling back to Text resulting in dropping rows containing non-numeric values for columns we crammed into a numeric type.

  • Minor optimization of CSV parsing In particular, dealing with RFC4180 style quoting

  • GHC-8.2.1 compatibility


  • Added CSV output functions: produceCSV and writeCSV
  • Added an Eq instance for the Frame type


Fixed column type inference bug that led the inferencer to prefer Bool too strongly.

This was fallout from typing columns whose values are all 0 or 1 as Bool.


Re-export Frames.CSV.declareColumn from Frames. This makes it much easier to manually define column types.


Use microlens instead of lens-family-core for demos.


GHC-8.0.1 compatibility

Improved documentation based on suggestions by Alexander Kjeldaas


Fixed bug in Monoid instance of Frame (@dalejordan)

Added frameConsA, frameSnoc, and RecordColumns to help with changing row types.

Initial version pushed to hackage.

comments powered byDisqus