úÎ8T6¬      Safe-InferedA  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 = ','     Safe-Infered !Try to parse given string as CSV Try to parse given string as 'Row Text'  Parse CSV Parse a CSV row      Safe-Infered!Try to parse given string as CSV Try to parse given string as 'Row ByteString'  Parse CSV Parse a CSV row  Safe-Infered Represents 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  /myProcessor :: Conduit (Row Text) m (Row Text)  myProcessor = undefined  test = runResourceT $  sourceFile test/BigFile.csv $=  intoCSV defCSVSettings $=  myProcessor $=  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  . 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. >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  instance using   instance using   Input file *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'       !"#$%&'()*+,-csv-conduit-0.2Data.CSV.ConduitData.CSV.Conduit.Parser.Text"Data.CSV.Conduit.Parser.ByteStringData.CSV.Conduit.TypesDataMap Data.ConduitListresourcet-0.3.2Control.Monad.Trans.Resource runResourceTMapRowRow CSVSettingsCSVScsvSep csvQuoteCharcsvOutputQuoteCharcsvOutputColSepdefCSVSettingsparseCSVparseRowcsvrowCSVrowToStrintoCSVfromCSV readCSVFile mapCSVFile transformCSVbase Data.MaybeNothing text-0.11.2.0Data.Text.InternalTextbytestring-0.9.2.1Data.ByteString.Internal ByteString $fCSVsMap$fCSVByteString[] $fCSVText[]$fCSVByteString[]0