úÎA¯?      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. 3Quote character that should be used in the output. 3Field separator that should be used in the output. "Default settings for a CSV file.  csvSep = ','  csvQuoteChar = Just '"'  csvOutputQuoteChar = Just '"'  csvOutputColSep = ','    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. *An easy way to run this function would be  after  feeding it all the arguments. 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 ' /012&Settings to use in deciphering stream  Input file  CSV Settings  Target file Write vs. append mode  List of rows *Settings to use both for input and output A mapping function  Input file  Output file )Settings to be used for input and output A raw stream data source. Ex: 'sourceFile inFile' A transforming conduit A raw stream data sink. Ex: 'sinkFile outFile' )*,-.  /012)*,-.3    !"#$%&'()%&'()*+,-./"0123"0456789:;<csv-conduit-0.4.1Data.CSV.ConduitData.CSV.Conduit.Parser.Text"Data.CSV.Conduit.Parser.ByteStringData.CSV.Conduit.TypesDataMap Data.ConduitListresourcet-0.4.4Control.Monad.Trans.Resource runResourceTMapRowRow CSVSettingsCSVScsvSep csvQuoteCharcsvOutputQuoteCharcsvOutputColSepdefCSVSettingsparseCSVparseRowcsvrowCSVrowToStrintoCSVfromCSV writeHeaders readCSVFile writeCSVFile mapCSVFile transformCSVbase Data.MaybeNothingbadrowcsvrowfield 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