h* =      !"#$%&'()*+,-./0123456789:;<0.8.2.1 Safe-Inferred)*9\siphonThis just actually a specialization of the free applicative. Check out Control.Applicative.Free in the free library to learn more about this. The meanings of the fields are documented slightly more in the source code. Unfortunately, haddock does not play nicely with GADTs.siphon.Error occurred parsing the document into cellssiphonError decoding the contentsiphon Wrong number of cells in the rowsiphonThree parts: (a) Multiple header cells matched the same expected cell, (b) Headers that were missing, (c) Missing headers that were lambdas. They cannot be shown so instead their positions in the  are given.siphon,Not enough cells in header, expected, actual siphon-Error decoding unicode content, column number     Safe-Inferred9=siphonStrict in the spine and in the values This is built in reverse and then reversed by reverseVectorStrictList when converting to a vector.)siphon"Backwards-compatibility alias for *.*siphonDecode a CSV whose first row is contains headers identify each column.+siphonDecode a CSV without a header.-siphonStreaming variant of .. This is particularly useful when you need to produce millions of rows without having them all loaded into memory at the same time..siphon'Encode a collection to a CSV as a text >. For example, we can take the following columnar encoding of a person::{-let colPerson :: Colonnade Headed Person Text colPerson = mconcat [ C.headed "Name" name, , C.headed "Age" (T.pack . show . age)6 , C.headed "Company" (fromMaybe "N/A" . company) ]:}And we have the following people whom we wish to encode in this way::{let people :: [Person] people =0 [ Person "Chao" 26 (Just "Tectonic, Inc.")5 , Person "Elsie" 41 (Just "Globex Corporation")$ , Person "Arabella" 19 Nothing ]:}0We pair the encoding with the rows to get a CSV:8LTIO.putStr (TB.toLazyText (encodeCsv colPerson people))Name,Age,CompanyChao,26,"Tectonic, Inc."Elsie,41,Globex CorporationArabella,19,N/A/siphon-Encode a collection to a CSV as a bytestring ?.0siphon Maps over a  Decolonnade that expects headers, converting these expected headers into the indices of the columns that they correspond to.@siphonParse a field. The field may be in either the escaped or non-escaped format. The return value is unescaped. This parser will consume the comma that comes after a field but not a newline that follows a field. If we are positioned at a newline when it starts, that newline will be consumed and we return CellResultNewline.AsiphonConsume an unescaped field. If it ends with a newline, leave that in tact. If it ends with a comma, consume the comma.BsiphonThis could be improved. We could avoid the builder and just write to a buffer directly.1siphonThis adds one to the index because text editors consider line number to be one-based, not zero-based.CsiphonYou must pass the length of the list and as the first argument. Passing the wrong length will lead to an error.DsiphonThis function uses  unsafeIndex to access elements of the E.FsiphonThis function does not check to make sure that the indicies in the  Decolonnade are in the E. Only use this if you have already verified that none of the indices in the siphon are out of the bounds.2siphon(Uses the argument to parse a CSV column.3siphonUses the second argument to parse a CSV column whose header content matches the first column exactly.4siphonUses the second argument to parse a CSV column that is positioned at the index given by the first argument. )siphon encoded csv*siphon encoded csv+siphonHow many columns are there? This number should be greater than any indices referenced by the scheme.siphon encoded csv.siphonTablular encodingsiphonValue of each row/siphonTablular encodingsiphonValue of each rowGsiphon separatorsiphonnewlineHsiphon separatorsiphonnewlineIsiphon separatorsiphonnewline0siphonHeaders in the source documentsiphon*Decolonnade that contains expected headersJsiphon'index of first row, usually zero or onesiphonRequired row lengthKsiphontrue if null stringsiphon!true if termination is acceptableLsiphonTrue if termination is acceptable. False if it is because of a decoding error.siphon'index of first row, usually zero or onesiphonRequired row length.-/,)*+324( 0156.-/,)*+324( 0156       !"#$%&'()*+,-./0123456789:;<=>?@AB@CDEFGHIJKLMNOPQ%siphon-0.8.2.1-8dcLKa67YXjDqjQS43MaA9 Siphon.TypesSiphonsiphon SiphonPureSiphonApRowError RowErrorParseRowErrorDecode RowErrorSizeRowErrorHeadersRowErrorHeaderSizeRowErrorMalformed SiphonErrorsiphonErrorRowsiphonErrorCauseIndexed indexedIndex CellErrorcellErrorColumncellErrorContent $fEq1Indexed$fShow1Indexed$fExceptionSiphonError$fApplicativeSiphon$fFunctorSiphon$fShowSiphonError$fReadSiphonError$fEqSiphonError$fShowRowError$fReadRowError $fEqRowError $fEqIndexed $fOrdIndexed$fFunctorIndexed $fShowIndexed $fReadIndexed$fShowCellError$fReadCellError $fEqCellErrorEscaped decodeCsvUtf8decodeHeadedCsvUtf8decodeIndexedCsvUtf8encodeCsvStreamUtf8encodeCsvStream encodeCsv encodeCsvUtf8headedToIndexedhumanizeSiphonErrorheadlessheadedindexedeqSiphonHeadersshowSiphonHeaders$fMonoidHeaderErrors$fSemigroupHeaderErrors$fApplicativeEitherWrap$fFunctorEitherWrap$fShowCellResult $fShowEnded StrictList text-2.0.2Data.Text.Internal.BuilderBuilderbytestring-0.11.5.2 Data.ByteString.Builder.InternalfieldunescapedFieldunescapereverseVectorStrictListuncheckedRunWithRow&vector-0.13.1.0-3iwp0ZpVFXd2eoMdapVrKn Data.VectorVector uncheckedRunencodeCsvInternal encodeHeader encodeRowsconsumeBodyUtf8consumeHeaderRow consumeBody