h$`QS1      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~. Safe-Inferred"  Safe-InferredJ Safe-Inferred;<t Safe-InferredNoneNoneNone( None:<S None:<dsv Position  !" Nonew'dsvUse >-> to build an #: a pipeline consisting of a &! at the beginning, any number of %s in the middle, and a $ at the end.  #$%&' None:<(dsvThe general concept of what can go wrong when you look up the position of a particular element in a list.)dsv There is no matching element.*dsv There are  more than one matching elements.+dsv?Found one matching element, but it is not a valid UTF-8 string.()*+ None:< ,dsvThe general concept of what can go wrong when you look up the position of a particular element in a list.-dsv There is no matching element..dsv There are  more than one matching elements.,-./012None:< 3dsvThe general concept of what can go wrong when you look up something by position in a list.4dsvThere is no element at that position because the list isn't long enough.5dsvThere is something wrong with the element found at the position.34567None  None 8dsv&A Template Haskell expression of type . Rejects code points above 0xff.Examplecomma is defined as: $(8 ',')&This could be written equivalently as:  ( ( ','))but the former includes a compile-time check to ensure that the character ','2 is representable by a single byte (and thus that  does not overflow).8None*9dsvASCII code point 0x2C, the typical choice of DSV delimiter. DSV (delimiter-separated value) files that use the comma delimiter are called CSV (comma-separated-value) files.  comma = $(8 ','):dsvASCII code point 0x09!, the "horizontal tab" character. tab = $(8 't')89:None<dsv%File handle to read parser input from;<None=>None ?@ Safe-Inferred None'BdsvExamples ,nthVectorElement 0 ["a", "b", "c"] = Nothing -nthVectorElement 1 ["a", "b", "c"] = Just "a" -nthVectorElement 2 ["a", "b", "c"] = Just "b" -nthVectorElement 3 ["a", "b", "c"] = Just "c" ,nthVectorElement 4 ["a", "b", "c"] = Nothing ABCDEFNoneGdsvLike H', but allows customizing the delimiter.Hdsv This pipe s  ByteString3 input read from a CSV file, parses the input, and s a A  for each row in the CSV file. If this pipe reaches some portion of the input that is not formatted correctly and cannot parse any further, the pipe terminates and s a .dsv,What character separates input values, e.g. 9 or :Gdsv,What character separates input values, e.g. 9 or :Idsv!File handle to read CSV data fromJdsv,What character separates input values, e.g. 9 or :dsv!File handle to read DSV data fromGHIJNone:KdsvExample#import qualified Pipes.Prelude as Pr1 = listToVector ["A","B"]r2 = listToVector ["1","2"]r3 = listToVector ["3","4"]'p = do { yield r1; yield r2; yield r3 }+runEffect (p >-> zipHeaderPipe >-> P.print)[("A","1"),("B","2")][("A","3"),("B","4")]LdsvExample#import qualified Pipes.Prelude as Pr1 = listToVector ["A","B"]r2 = listToVector ["1","2"]r3 = listToVector ["3","4"]'p = do { yield r1; yield r2; yield r3 }4runEffect (p >-> zipHeaderWithPipe (<>) >-> P.print) ["A1","B2"] ["A3","B4"]KLNoneMdsv,What character separates input values, e.g. comma or tabdsvThe path of a CSV file to readNdsv,What character separates input values, e.g. comma or tabdsvThe path of a CSV file to readOdsv,What character separates input values, e.g. comma or tabdsvThe path of a CSV file to readMNONone Pdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvConversion function by which you specify how to interpret one row of bytes from the DSV fileQdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvConversion function by which you specify how to interpret one row of bytes from the DSV fileRdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsv0Function which interprets the header (the first Vector ByteString%) and returns a conversion function (Vector ByteString -> IO row) by which you specify how to interpret one row of bytes from the DSV filePQRNone$USdsvOften, the first line of a CSV file is a row that gives the name of each column in the file. If present, this row is called the header.Example CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsResult: ( ParseComplete, [ [ ("Date", "2019-03-24"), ("Vendor", "Acme Co"), ("Price", "$599.89"), ("Product", "Dehydrated boulders") ], [ ("Date", "2019-04-18"), ("Vendor", "Acme Co"), ("Price", "$24.95"), ("Product", "Earthquake pills") ] ] )Example with a malformed file CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-03-29,Store Mart,"$"8.14,Coffee beans 2019-04-18,Acme Co,$24.95,Earthquake pillsNotice the quotation marks around the dollar sign on the third line.Result: ( ParseIncomplete, [ [ ("Date", "2019-03-24"), ("Vendor", "Acme Co"), ("Price", "$599.89"), ("Product", "Dehydrated boulders") ] )=The result includes the first row of data because it appears before) the malformed line. All data that comes after the erroneous quotation is discarded, even though the final line does contain correctly formatted data.TdsvNot every CSV file has a header row. Use this function to read a CSV file that does not have a header.Example CSV file: 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsResult: ( ParseComplete, [ ["2019-03-24", "Acme Co", "$599.89", "Dehydrated boulders"], ["2019-04-18", "Acme Co", "$24.95", "Earthquake pills"] ] )Example with a malformed file CSV file: 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-03-29,Store Mart,"$"8.14,Coffee beans 2019-04-18,Acme Co,$24.95,Earthquake pillsResult: ( ParseIncomplete, [ ["2019-03-24", "Acme Co", "$599.89", "Dehydrated boulders"] ] )UdsvSometimes a CSV file has a header but you don't care about it. In that case, you can use this function to ignore8 the header line and read only the rows containing data.Example CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsResult: ( ParseComplete, [ ["2019-03-24", "Acme Co", "$599.89", "Dehydrated boulders"], ["2019-04-18", "Acme Co", "$24.95", "Earthquake pills"] ] )SdsvThe path of a CSV file to readTdsvThe path of a CSV file to readUdsvThe path of a CSV file to readSTUNone&VdsvThe path of a CSV file to readdsvConversion function by which you specify how to interpret one row of bytes from the CSV fileWdsvThe path of a CSV file to readdsvConversion function by which you specify how to interpret one row of bytes from the CSV fileXdsvThe path of a CSV file to readdsv0Function which interprets the header (the first Vector ByteString%) and returns a conversion function (Vector ByteString -> IO row) by which you specify how to interpret one row of bytes from the CSV fileVWXNone*cYdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each rowZdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each row[dsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each row\dsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each row]dsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each row^dsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvWhat to do with each rowYZ[\]^None25<=*_`abcdefghijklmNone*nopq None:<>+Bdsv1Decode a byte string as UTF-8 text, failing with  if the decoding fails. rstu!None+p"None+()*+vwxy#None+$None :</dsv3Read a rational number written in decimal notation.Examples:set -XOverloadedStrings'applyView byteStringRationalView "1234"Success (1234 % 1)+applyView byteStringRationalView "1234.567"Success (1234567 % 1000))applyView byteStringRationalView "12.3.4"Failure InvalidRationaldsv3Read a rational number written in decimal notation.Examples:set -XOverloadedStrings!applyView textRationalView "1234"Success (1234 % 1)%applyView textRationalView "1234.567"Success (1234567 % 1000)#applyView textRationalView "12.3.4"Failure InvalidRationaldsvRead a dollar amount.Examples+applyView byteStringDollarsView "$1234.567"Success (1234567 % 1000)*applyView byteStringDollarsView "1234.567"Failure InvalidDollarsdsvRead a dollar amount.Examples%applyView textDollarsView "$1234.567"Success (1234567 % 1000)$applyView textDollarsView "1234.567"Failure InvalidDollarsz{|}~%None8ddsvExample CSV file: 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (d 0 $  l n 3)  Result: ( , 624.84) dsvExample CSV file: 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (  . B 4) *>   Output printed to the terminal: $Dehydrated boulders Earthquake pillsResult: (, 2) dsvExample CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (d 0 $  l n 3)  Result: ( , 624.84) dsvExample CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (  . B 4) *>   Output printed to the terminal: $Dehydrated boulders Earthquake pillsResult: (, 2) dsvExample CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (d 0 $  l p (== "Price"))  Result: ( , 624.84) dsvExample CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsFold:  (  . C (== "Product")) *>   Output printed to the terminal: $Dehydrated boulders Earthquake pillsResult: (, 2) dsvThe path of a CSV file to readdsvWhat to do with each rowdsvThe path of a CSV file to readdsvWhat to do with each rowdsvThe path of a CSV file to readdsvWhat to do with each rowdsvThe path of a CSV file to readdsvWhat to do with each rowdsvThe path of a CSV file to readdsvWhat to do with each rowdsvThe path of a CSV file to readdsvWhat to do with each row& Safe-Inferred9?dsv/The input contained no rows, not even a header.dsvThere is some problem with the header that would prevent us from interpreting the subsequent rows.'None;,dsvA description of what prompted the program to stop reading a DSV file with a header. This is similar to  ParseStop8, but includes some additional header-specific concerns.dsv/The input contained no rows, not even a header.dsvAll of the input was consumed.dsv1The parsing stopped where the data was malformed.dsvThere is some problem with the header that would prevent us from interpreting the subsequent rows.(None25<=B*dsv captures a common pattern for consuming a DSV file with a header row: First we have one _ that looks at the header row, and from that we determine how to view the subsequent rows of data. We use that second _ to interpret each row.For example, if we want to read the "Date" and "Price" columns, when we read the header we may see that these are the first and third columns, respectively; and so the first _ will return a _3 that reads the first and third column of each row.ErrorsThere are two distinct modes of failure in this process, represented by the two type parameters  headerError and rowError.A   of the  headerError type is produced by the first _ if the header is malformed in a way that prevents us from being able to read the data rows - for example, if we want to read the "Date" column but the header does not contain any entry with that name.A   of the rowError type is produced by the second _ for each malformed row - for example, if "Price" is the third column but the row only contains two entries, or if we require the entry to contain a dollar amount but it contains some other unrecognizable string.Note that header errors which are unrecoverable, whereas it is possible to continue past row errors and get a mixture of   and   results among the rows.dsv has an  but no  , so you may wish to enable the  ApplicativeDo GHC extension.dsv%A view that produces a value of type a for each row.dsvA way to interpret that a value as a different type b.dsv%A view that produces a value of type b for each row.)NoneFdsv7A specification of how to interpret the header and rowsdsv The first vector that this pipe ?s is the header. If the header is invalid, the pipe closes and s the  headerError. Otherwise, the pipe continues indefinitely; for each subsequent A , it s one   rowError row.dsv7A specification of how to interpret the header and rowsdsv The first vector that this pipe ?s is the header. If the header is invalid, the pipe closes and s (). Otherwise, the pipe continues indefinitely; for each subsequent A , it s a row if the row is valid, or otherwise does nothing if the row is malformed.dsv7A specification of how to interpret the header and rowsdsv The first vector that this pipe ?s is the header. If the header is invalid, the pipe throws the  headerError as an exception in m. For each subsequent A  , the pipe s a row. if the row is valid, or otherwise throws the rowError as an exception in m.*NoneF+NoneHdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvHow to interpret the rowsdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvHow to interpret the rowsdsv,What character separates input values, e.g. comma or tabdsvThe path of a DSV file to readdsvHow to interpret the rows,None?H-NoneQdsvExample: Reading entire rows CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsView:  () () Result: ( , [   ["2019-03-24", "Acme Co", "$599.89", "Dehydrated boulders"],  > ["2019-04-18", "Acme Co", "$24.95", "Earthquake pills"] ] ) #Example: Reading particular columns CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydrated boulders 2019-04-18,Acme Co,$24.95,Earthquake pillsView: do date <-  (:[]) (:[]) ( "Date" t) product <-  (:[]) (:[]) ( "Product" t) return (date, product) Result: ( , [  , ("2019-03-24", "Dehydrated boulders"),  ( ("2019-04-18", "Earthquake pills") ] ) Example: Decoding errors CSV file: Date,Vendor,Price,Product 2019-03-24,Acme Co,$599.89,Dehydra\xc3\x28d boulders 2019-04-18,\xc3\x28me Co,$24.95,Earthquake pillsIn this example, \xc3\x28 represents two bytes which constitute an invalid sequence in UTF-8. Notice that there is a UTF-8 error on each of the last two lines.View: do date <-  (:[]) (:[]) ( "Date" t) product <-  (:[]) (:[]) ( "Product" t) return (date, product) Result: ( , [   [ ( "Product") (5 r)] ,  ( ("2019-04-18", "Earthquake pills") ] "The first item in the result is a  , because we tried to decode the value in the "Product" column, and it cannot be decoded as UTF-8. The second item in the result is a  , because although the row does contain an encoding error, the error is in the "Vendor" field, which we never read.dsvThe path of a CSV file to readdsvHow to interpret the rowsdsvThe path of a CSV file to readdsvHow to interpret the rowsdsvThe path of a CSV file to readdsvHow to interpret the rowsNoneQ3  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~STUABCDEF=>NMO9:8VWXPQR]^YZ[\_` ghijkmlabfcde~|}z{n67345opq/012,-.vx()*+wyHGIJKL%&$# ' ;<!" ?@utrs. Safe-InferredS/01234235678678679679:;<:;=:>?@AB@AC@ADEFGGHIJKLL M M N N O O P P Q Q R R S T U V W X Y Z [ \ ] ^ _ _ ` `abcddefghijklmnopqrstuvwxyz{|}~    """"$$$$$$$$$$$$$$$$$$%%%%%%&&&'''''(((((()))**+++,,,,,---222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222323222222222222222222222222222222222222222222222222222222222222222       2      !!#67676726767(........"dsv-1.0.0.2-IEPlsG61SqKKXgwEzKNQiwDSVDSV.AttoParserDSV.ByteStringDSV.DelimiterTypeDSV.IO DSV.Prelude DSV.ParseStopDSV.ParseError DSV.Numbers DSV.Position DSV.PipesDSV.LookupErrorUtf8DSV.LookupErrorDSV.IndexErrorDSV.FoldDSV.DelimiterSpliceDSV.CommonDelimiters DSV.AttoPipeDSV.RequireCompleteParseDSV.TextDSV.Validation DSV.Vector DSV.Parsing DSV.HeaderDSV.FileStrictReadDSV.FileStrictMapDSV.FileStrictCsvReadDSV.FileStrictCsvMap DSV.FileFold DSV.ViewTypeDSV.VectorViewsDSV.UTF8DSV.TextReaderViewDSV.LookupUtf8 DSV.AttoViewDSV.NumberViewsDSV.FileFoldCsvDSV.ZipViewErrorDSV.ZipViewStopDSV.ZipViewTypeDSV.ZipViewPipeDSV.ZipViewFoldDSV.FileStrictZipView DSV.ZipViewsDSV.FileStrictCsvZipView Paths_dsv text-1.2.3.2Data.Text.InternalTextbaseControl.Category>>><<<#foldl-1.4.12-EbXDZX9nbZgDBabQZguF82 Control.FoldlFoldFoldM"pipes-4.3.16-7TlDWhcTqX0OaWYaUPSB5Pipesawaityield Pipes.Core runEffect'validation-1.1.1-CtXgmHDroGi8fBgGPZn7p2Data.ValidationSuccessFailure Validation AttoParser ByteString DelimiterdelimiterWord8 ParseStop ParseCompleteParseIncomplete ParseErrorPositiveAtPosition ColumnName ColumnNumber RowNumberEffectConsumerPipeProducer>->LookupErrorUtf8LookupErrorUtf8_MissingLookupErrorUtf8_DuplicateLookupErrorUtf8_Invalid LookupErrorLookupError_MissingLookupError_Duplicate DuplicateMissing IndexErrorIndexError_TooShortIndexError_FieldErrorTooShort charDelimitercommatabattoPipehandleAttoProducerrequireCompleteParse completely stringToText textToStringVectornthVectorElement vectorLookup listToVector vectorToList emptyVector dsvRowPipe csvRowPipehandleCsvRowProducerhandleDsvRowProducer zipHeaderPipezipHeaderWithPipereadDsvFileStrictWithoutHeader!readDsvFileStrictWithZippedHeaderreadDsvFileStrictIgnoringHeadermapDsvFileStrictWithoutHeadermapDsvFileStrictIgnoringHeadermapDsvFileStrictUsingHeader!readCsvFileStrictWithZippedHeaderreadCsvFileStrictWithoutHeaderreadCsvFileStrictIgnoringHeadermapCsvFileStrictWithoutHeadermapCsvFileStrictIgnoringHeadermapCsvFileStrictUsingHeaderfoldDsvFileWithoutHeaderfoldDsvFileWithoutHeaderMfoldDsvFileIgnoringHeaderfoldDsvFileIgnoringHeaderMfoldDsvFileWithZippedHeaderfoldDsvFileWithZippedHeaderMView applyView viewOrThrow viewMaybeviewOrviewOr'viewOrThrowInput constView maybeView overViewErrorinputAsViewErrordiscardViewError<<<->>>-columnNumberViewcolumnNumberView_ lookupView lookupView_ InvalidUtf8 utf8TextViewencodeTextUtf8lookupTextViewUtf8lookupTextViewUtf8_lookupStringViewUtf8lookupStringViewUtf8_InvalidDollarsInvalidRational InvalidNatbyteStringNatViewbyteStringNatView_ textNatView textNatView_byteStringRationalViewbyteStringRationalView_textRationalViewtextRationalView_byteStringDollarsViewbyteStringDollarsView_textDollarsViewtextDollarsView_foldCsvFileWithoutHeaderfoldCsvFileWithoutHeaderMfoldCsvFileIgnoringHeaderfoldCsvFileIgnoringHeaderMfoldCsvFileWithZippedHeaderfoldCsvFileWithZippedHeaderM ZipViewErrorZipViewError_EmptyZipViewError_HeaderError ZipViewStop ZipViewEmptyZipViewCompleteZipViewParseErrorZipViewHeaderErrorZipView refineZipViewoverHeaderError overRowErroroverZipViewError zipViewPipezipViewPipeIgnoringAllErrorszipViewPipeThrowFirstError zipViewFold zipViewFoldMzipViewDsvFileStrict%zipViewDsvFileStrictIgnoringAllErrors#zipViewDsvFileStrictThrowFirstErrorbyteStringZipViewtextZipViewUtf8textZipViewUtf8'byteStringZipViewPositionentireRowZipViewzipViewCsvFileStrict%zipViewCsvFileStrictIgnoringAllErrors#zipViewCsvFileStrictThrowFirstErrorGHC.IO.Handle.TypesHandleControl.Monad.IO.ClassMonadIOliftIO GHC.ExceptionthrowGHC.Exception.Type ExceptiondisplayException GHC.IO.IOModeIOModeReadModeexceptions-0.10.4Control.Monad.Catch MonadThrowthrowM MonadCatch MonadMask'pipes-safe-2.3.3-9eFm7TEUlMDEWlFGfZ4hMsPipes.Safe.PreludewithFile Pipes.SaferunSafeTSafeTGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip System.IOprint Data.Tuplefstsnd otherwisemap$coerceGHC.Real fromIntegral realToFracGHC.EnumBoundedminBoundmaxBoundEnumpredsucctoEnumfromEnum enumFromToenumFromThenToenumFrom enumFromThen GHC.ClassesEq==/= GHC.FloatFloatingatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogpiexp Fractionalrecip fromRational/IntegraldivModquotRemmoddivrem toIntegerquotMonadreturn>>=>>Functorfmap<$GHC.NumNumsignumabs fromIntegernegate-+*Ord<<=>maxmin>=compareGHC.ReadRead readsPrecreadListReal toRational RealFloatatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatRadix floatDigitsRealFracfloorceilingroundproperFractiontruncateGHC.ShowShowshowListshow showsPrecData.Typeable.InternalTypeableControl.Monad.Fail MonadFailfail Applicative<**>pure<*> Data.FoldableFoldableelemminimummaximumfoldr1productsumfoldl1nullfoldMaplengthfoldrfoldltoListData.Traversable Traversablesequence sequenceAtraversemapM Semigroup<>Monoidmconcatmemptymappend GHC.TypesBoolFalseTrueCharDoubleFloatIntinteger-wired-inGHC.Integer.TypeInteger GHC.MaybeMaybeNothingJustOrderingGTLTEQRationalIOWord Data.EitherEitherLeftRight Coercibleeither Text.ReadreadStringData.Functor.ComposeComposereadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.ExceptionioErrorGHC.IOFilePath userErrorIOErrornotElemallanyorand concatMapconcat sequence_mapM_ Data.OldListunwordswordsunlineslinesreadsid.lex readParenText.ParserCombinators.ReadPReadSlcmgcd^^^oddeven showParen showStringshowCharshowsShowSunzip3unzipzipWith3zipWithzip3!!lookupreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrscanl1scanllasttailhead Data.Maybemaybe Data.Functorvoid<$>uncurrycurrysubtractasTypeOfuntil$!flipconst=<<GHC.Err undefinederrorWithoutStackTraceerror&&||not GHC.NaturalNaturalArithException UnderflowOverflowLossOfPrecision DivideByZeroDenormalRatioZeroDenominatorfromIntegerMaybe natPositive positiveNat positiveIntAtHeadertransformers-0.5.6.2Control.Monad.Trans.ClassliftcountfoldDrop foldDropM foldProducer foldProducerM foldVectorMord TextReadertextNulltextStripPrefix textReadMaybetextReadRationaltextReadDecimal overFailurevectorIndexIntvectorIndexNatvectorIndexInteger vectorZip vectorZipWith dsvRowAtto zipHeader zipHeader' zipHeaderWithzipHeaderWith'applyHeaderPipeapplyHeaderPipeM utf8TextMaybe DecodeUtf8decodeUtf8Maybe EncodeUtf8 encodeUtf8utf8ViewtextReaderViewtextReaderView_attoByteStringViewpremap traverse_bytestring-0.10.10.0Data.ByteString.Char8 generalize$fApplicativeZipViewversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName