úÎ=º;(      Safe-InferredA  is a dictionary based on  A  is just a list of fields ASettings for a CSV file. This library is intended to be flexible @ and offer a way to process the majority of text data files out  there. 1Separator character to be used in between fields =Quote character that may sometimes be present around fields.  If 3 is given, the library will never expect quotation  even if it is present. !Default settings for a CSV file.  csvSep = ','  csvQuoteChar = Just '"' None!Try to parse given string as CSV Try to parse given string as 'Row Text'  Parse CSV Parse a CSV row     None !Try to parse given string as CSV Try to parse given string as 'Row ByteString'  Parse CSV Parse a CSV row  !"#$    !"#$NoneRepresents types r( that are CSV-like and can be converted  to/"from an underlying stream of type s. Example # 1: Basics Using Convenience API  import Data.Conduit import Data.Conduit.Binary import Data.Conduit.List as CL import Data.CSV.Conduit  /myProcessor :: Conduit (Row Text) m (Row Text) myProcessor = CL.map reverse  test = runResourceT $  transformCSV defCSVSettings ( (sourceFile "input.csv")  myProcessor ' (sinkFile "output.csv") Example #2: Basics Using Conduit API import Data.Conduit import Data.Conduit.Binary import Data.CSV.Conduit  5myProcessor :: Conduit (MapRow Text) m (MapRow Text) myProcessor = undefined  test = runResourceT $ # sourceFile "test/BigFile.csv" $=  intoCSV defCSVSettings $=  myProcessor $= = (writeHeaders defCSVSettings >> fromCSV defCSVSettings) $$ ! sinkFile "test/BigFileOut.csv" 5Convert a CSV row into strict ByteString equivalent. Turn a stream of s+ into a stream of CSV row type. An example 1 would be parsing a ByteString stream as rows of  %. 4Turn a stream of CSV row type back into a stream of s. An ( example would be rendering a stream of  & rows as  %. =Write headers AND the row into the output stream, once. Just  chain this using the ' instance in your pipeline: E ... =$= writeHeaders settings >> fromCSV settings $$ sinkFile "..." 4Read the entire contents of a CSV file into memory. Write CSV data into file. >Map over the rows of a CSV file. Provided for convenience for  historical reasons. *An easy way to run this function would be  after  feeding it all the arguments. >General purpose CSV transformer. Apply a list-like processing  function from " to the rows of a CSV stream. You B need to provide a stream data source, a transformer and a stream  data sink. *An easy way to run this function would be  after  feeding it all the arguments. 6Example - map a function over the rows of a CSV file: C transformCSV set (sourceFile inFile) (C.map f) (sinkFile outFile) (Generic " instance; any stream type with a  instance  automatically gets a  instance. ) instance using * based on & stream. D Please note this uses the ByteString operations underneath and has 9 lots of unnecessary overhead. Included for convenience. + instance using % based on & stream , instance using % - instance using & ./01&Settings to use in deciphering stream  Input file  CSV Settings  Target file Write vs. append mode  List of rows /Settings to use both for both input and output A mapping function  Input file  Output file .Settings to be used for both input and output A raw stream data source. Ex: 'sourceFile inFile' A transforming conduit A raw stream data sink. Ex: 'sinkFile outFile' ()+,-./01()+,-2    !"#$%&'#$%&'()*+,-./01.23456789:csv-conduit-0.5.1Data.CSV.ConduitData.CSV.Conduit.Parser.Text"Data.CSV.Conduit.Parser.ByteStringData.CSV.Conduit.TypesDataMap Data.ConduitListresourcet-0.4.7Control.Monad.Trans.Resource runResourceTMapRowRow CSVSettingscsvSep csvQuoteChardefCSVSettingsparseCSVparseRowcsvrowCSVrowToStrintoCSVfromCSV writeHeaders readCSVFile writeCSVFile mapCSVFile transformCSVbase Data.MaybeNothing$fDefaultCSVSettingsbadrowcsvrowfield isFieldChar quotedField text-0.11.2.3Data.Text.InternalTextbytestring-0.10.0.2Data.ByteString.Internal ByteStringGHC.BaseMonad $fCSVsMap$fCSVByteString[]String$fCSVByteString[]0 $fCSVText[]$fCSVByteString[]1 fromCSVRow intoCSVRow intoCSVMap fromCSVMap