!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  unknown experimentalfelipe.lessa@gmail.comNoneCreate a set. Check the set for membership. unknown experimentalbos@serpentine.comNoneA simple parser. AThis monad is strict in its state, and the monadic bind operator  (8) evaluates each result to weak head normal form before  passing it along. Run a parser. *Consume input while the predicate returns . Consume n bytes of input. Match a string exactly. 8Indicate whether the end of the input has been reached. unknown experimentalbos@serpentine.com Safe-Inferred;A numeric type that can represent integers accurately, and . floating point numbers to the precision of a .   unknown experimentalbos@serpentine.comNoneBThe lower bound on the size of a lookup table. We choose this to , balance table density against performance. Create a set. Check the set for membership. ACheck the set for membership. Only works with 8-bit characters: : characters above code point 255 will give wrong answers.   unknown experimentalbos@serpentine.comNone"Have we read all available input? ;The core parser type. This is parameterised over the type t of  string being processed. 3This type is an instance of the following classes:  , where * throws an exception (i.e. fails) with an  error message.   and &, which follow the usual definitions.  , where # fails (with no error message) and  5 executes the right-hand parser if the left-hand one E fails. When the parser on the right executes, the input is reset A to the same state as the parser on the left started with. (In B other words, Attoparsec is a backtracking parser that supports  arbitrary lookahead.)  , which follows . <The result of a parse. This is parameterised over the type t  of string that was processed. This type is an instance of , where  transforms the  value in a   result. The parse succeeded. The t parameter is the 4 input that had not yet been consumed (if any) when  the parse succeeded. 1Supply this continuation with more input so that 2 the parser can resume. To indicate that no more * input is available, use an empty string. The parse failed. The t parameter is the / input that had not yet been consumed when the  failure occurred. The [] is a list of , contexts in which the error occurred. The  ) is the message describing the error, if  any. &     unknown experimentalbos@serpentine.comNone  unknown experimentalbos@serpentine.comNone Compare two   values for equality. If both  s are  , the result will be , as ? they are incomplete and hence their equality cannot be known.  (This is why there is no  instance for  .) portable experimentalbos@serpentine.comNone choice ps( tries to apply the actions in the list ps in order, A until one of them succeeds. Returns the value of the succeeding  action.  option x p tries to apply action p. If p fails without ' consuming input, it returns the value x, otherwise the value  returned by p. - priority = option 0 (digitToInt <$> digit)  A version of liftM2+ that is strict in the result of its first  action. many' p applies the action p zero or more times. Returns a  list of the returned values of p. The value returned by p is  forced to WHNF.  word = many' letter many1 p applies the action p one or more times. Returns a  list of the returned values of p.  word = many1 letter many1' p applies the action p one or more times. Returns a  list of the returned values of p. The value returned by p is  forced to WHNF.  word = many1' letter  sepBy p sep applies zero or more occurrences of p , separated  by sep+. Returns a list of the values returned by p. & commaSep p = p `sepBy` (symbol ",") sepBy' p sep applies zero or more occurrences of p , separated  by sep+. Returns a list of the values returned by p . The value  returned by p is forced to WHNF. ' commaSep p = p `sepBy'` (symbol ",")  sepBy1 p sep applies one or more occurrences of p , separated  by sep+. Returns a list of the values returned by p. ' commaSep p = p `sepBy1` (symbol ",") sepBy1' p sep applies one or more occurrences of p , separated  by sep+. Returns a list of the values returned by p . The value  returned by p is forced to WHNF. ( commaSep p = p `sepBy1'` (symbol ",") manyTill p end applies action p zero or more times until  action end6 succeeds, and returns the list of values returned by  p&. This can be used to scan comments:  K simpleComment = string "<!--" *> manyTill anyChar (try (string "-->")) Note the overlapping parsers anyChar and string "<!--", and  therefore the use of the try combinator. manyTill' p end applies action p zero or more times until  action end6 succeeds, and returns the list of values returned by  p&. This can be used to scan comments:  L simpleComment = string "<!--" *> manyTill' anyChar (try (string "-->")) Note the overlapping parsers anyChar and string "<!--", and  therefore the use of the try# combinator. The value returned by p  is forced to WHNF. *Skip zero or more instances of an action. )Skip one or more instances of an action. ;Apply the given action repeatedly, returning every result. Combine two alternatives. unknown experimentalbos@serpentine.comNone! If at least n2 bytes of input are available, return the current  input, otherwise fail. 8Ask for input. If we receive any, pass it to a success 4 continuation, otherwise to a failure continuation. $Immediately demand more input via a   continuation  result. )This parser always succeeds. It returns  if any input is 0 available either immediately or on demand, and  if the end  of all input has been reached. >Attempt a parse, and if it fails, rewind the input so that no & input appears to have been consumed. ;This combinator is provided for compatibility with Parsec. 1 Attoparsec parsers always backtrack on failure. ! The parser  satisfy p% succeeds for any byte for which the  predicate p returns $. Returns the byte that is actually  parsed. digit = satisfy isDigit ) where isDigit w = w >= 48 && w <= 57 " The parser skip p/ succeeds for any byte for which the predicate  p returns . skipDigit = skip isDigit ) where isDigit w = w >= 48 && w <= 57 # The parser satisfyWith f p$ transforms a byte, and succeeds if  the predicate p returns  on the transformed value. The 6 parser returns the transformed byte that was parsed. Consume n3 bytes of input, but succeed only if the predicate  returns . $Consume exactly n bytes of input. %string s3 parses a sequence of bytes that identically match  s". Returns the parsed string (i.e. s). This parser consumes no . input if it fails (even if a partial match). Note;: The behaviour of this parser is different to that of the B similarly-named parser in Parsec, as this one is all-or-nothing. D To illustrate the difference, the following parser will fail under  Parsec given an input of "for":  string "foo" <|> string "for" 9The reason for its failure is that the first branch is a - partial match, and will consume the letters 'f' and 'o' 7 before failing. In Attoparsec, the above parser will succeed on C that input, because the failed first branch will consume nothing. &5Skip past input for as long as the predicate returns . '/Consume input as long as the predicate returns   (i.e. until it returns "), and return the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. (/Consume input as long as the predicate returns  , and return  the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. )>Consume all remaining input and return it as a single string. *>Consume all remaining input and return it as a single string. +=A stateful scanner. The predicate consumes and transforms a D state argument, and each transformed state is passed to successive B invocations of the predicate on each byte of the input until one  returns  or the input ends. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. ,/Consume input as long as the predicate returns  , and return  the consumed input. CThis parser requires the predicate to succeed on at least one byte 7 of input: it will fail if the predicate never returns  or if  there is no input left. -Match any byte in a set.  vowel = inClass "aeiou" Range notation is supported.   halfAlphabet = inClass "a-nA-N" To add a literal '-', to a set, place it at the beginning or end  of the string. .Match any byte not in a set. /Match any byte. 0Match a specific byte. 1%Match any byte except the given one. 2Match any byte. Returns  if end of input has been & reached. Does not consume any input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. 3+Match only if all input has been consumed. 4:Return an indication of whether the end of input has been  reached. 5(Match either a single newline character '\n', or a carriage ( return followed by a newline character "\r\n". 6)Name the parser, in case failure occurs. Terminal failure continuation. Terminal success continuation. 7Run a parser. 8-Run a parser that cannot be resupplied via a   result.  FJust like unsafePerformIO, but we inline it. Big performance gains as 0 it exposes lots of things to further inlining.  Very unsafe. In : particular, you should do no memory allocation inside an    block. On Hugs this is just unsafePerformIO. /     !"#$%&'()*+,-./0123456!the name to use if parsing fails 78 , !"#$%&'()*+,-./012345678.     !"#$%&'()*+,-./012345678 unknown experimentalbos@serpentine.comNone" If at least n/ characters of input are available, return the  current input, otherwise fail. 8Ask for input. If we receive any, pass it to a success 4 continuation, otherwise to a failure continuation. $Immediately demand more input via a   continuation  result. )This parser always succeeds. It returns  if any input is 0 available either immediately or on demand, and  if the end  of all input has been reached. ;>Attempt a parse, and if it fails, rewind the input so that no & input appears to have been consumed. ;This combinator is provided for compatibility with Parsec. 1 Attoparsec parsers always backtrack on failure. < The parser  satisfy p* succeeds for any character for which the  predicate p returns  . Returns the character that is  actually parsed. digit = satisfy isDigit + where isDigit c = c >= '0' && c <= '9' = The parser skip p* succeeds for any character for which the  predicate p returns . skipDigit = skip isDigit + where isDigit c = c >= '0' && c <= '9' > The parser satisfyWith f p& transforms a character, and succeeds  if the predicate p returns  on the transformed value. The ; parser returns the transformed character that was parsed. Consume n. characters of input, but succeed only if the  predicate returns . ?Consume exactly n characters of input. @string s8 parses a sequence of characters that identically match  s". Returns the parsed string (i.e. s). This parser consumes no . input if it fails (even if a partial match). Note;: The behaviour of this parser is different to that of the B similarly-named parser in Parsec, as this one is all-or-nothing. D To illustrate the difference, the following parser will fail under  Parsec given an input of "for":  string "foo" <|> string "for" 9The reason for its failure is that the first branch is a - partial match, and will consume the letters 'f' and 'o' 7 before failing. In Attoparsec, the above parser will succeed on C that input, because the failed first branch will consume nothing. A)Satisfy a literal string, ignoring case. ANote: this function is currently quite inefficient. Unicode case , folding can change the length of a string ("" becomes  ss>), which makes a simple, efficient implementation tricky. We 3 have (for now) chosen simplicity over efficiency. BKSatisfy a literal string, ignoring case for characters in the ASCII range. C5Skip past input for as long as the predicate returns . D/Consume input as long as the predicate returns   (i.e. until it returns "), and return the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns " on the first character of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. E/Consume input as long as the predicate returns  , and return  the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns " on the first character of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. F>Consume all remaining input and return it as a single string. G>Consume all remaining input and return it as a single string. H=A stateful scanner. The predicate consumes and transforms a D state argument, and each transformed state is passed to successive G invocations of the predicate on each character of the input until one  returns  or the input ends. BThis parser does not fail. It will return an empty string if the  predicate returns " on the first character of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. I/Consume input as long as the predicate returns  , and return  the consumed input. >This parser requires the predicate to succeed on at least one A character of input: it will fail if the predicate never returns   or if there is no input left. JMatch any character in a set.  vowel = inClass "aeiou" Range notation is supported.   halfAlphabet = inClass "a-nA-N" To add a literal '-', to a set, place it at the beginning or end  of the string. K"Match any character not in a set. LMatch any character. MMatch a specific character. N*Match any character except the given one. OMatch any character. Returns  if end of input has been & reached. Does not consume any input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. P+Match only if all input has been consumed. Q:Return an indication of whether the end of input has been  reached. R(Match either a single newline character '\n', or a carriage ( return followed by a newline character "\r\n". S)Name the parser, in case failure occurs. Terminal failure continuation. Terminal success continuation. TRun a parser. U-Run a parser that cannot be resupplied via a   result. 4 !"#9:$%&;'()*<=>?@ABCDE+FGHIJKLMNOPQRS!the name to use if parsing fails TU,,9:;<=>?@ABCDEFGHIJKLMNOPQRSTU2 !"#9:$%&;'()*<=>?@ABCDE+FGHIJKLMNOPQRSTU,unknown experimentalbos@serpentine.comNoneVIf a parser has returned a Partial result, supply it with more  input. W6Run a parser and print its result to standard output. X@Run a parser with an initial input string, and a monadic action ' that can supply more input if needed. Y Convert a 9 value to a - value. A Partial result  is treated as failure. Z Convert a 9 value to an . value. A Partial result  is treated as failure. [2A predicate that matches either a carriage return '\r' or  newline '\n' character. \(A predicate that matches either a space ' ' or horizontal tab  '\t' character. ]AParse and decode an unsigned hexadecimal number. The hex digits  'a' through 'f' may be upper or lower case. &This parser does not accept a leading "0x" string. ^-Parse and decode an unsigned decimal number. _(Parse a number with an optional leading '+' or '-' sign  character. `Parse a rational number. DThis parser accepts an optional leading sign character, followed by E at least one decimal digit. The syntax similar to that accepted by  the /. function, with the exception that a trailing '.' or  'e' not' followed by a number is not consumed. %Examples with behaviour identical to /, if you feed an empty # continuation to the first result:   rational "3" == Done 3.0 ""  rational "3.1" == Done 3.1 "" $rational "3e4" == Done 30000.0 "" %rational "3.1e4" == Done 31000.0, "" %Examples with behaviour identical to /:  =rational ".3" == Fail "input does not start with a digit" =rational "e3" == Fail "input does not start with a digit" Examples of differences from /:  $rational "3.foo" == Done 3.0 ".foo" !rational "3e" == Done 3.0 "e" 8This function does not accept string representations of "NaN" or  "Infinity". aParse a rational number. 6The syntax accepted by this parser is the same as for `. Note0: This function is almost ten times faster than `,  but is slightly less accurate. The 4 type supports about 16 decimal places of accuracy. ) For 94.2% of numbers, this function and ` give identical D results, but for the remaining 5.8%, this function loses precision = around the 15th decimal place. For 0.001% of numbers, this A function will lose precision at the 13th or 14th decimal place. 8This function does not accept string representations of "NaN" or  "Infinity". bAParse a number, attempting to preserve both speed and precision. 6The syntax accepted by this parser is the same as for `. Note0: This function is almost ten times faster than `. A On integral inputs, it gives perfectly accurate answers, and on : floating point inputs, it is slightly less accurate than  `. 8This function does not accept string representations of "NaN" or  "Infinity". c'Parse a single digit, as recognised by 0. d!Parse a letter, as recognised by 1. e*Parse a space character, as recognised by 2. fSkip over white space. gType-specialized version of 3 for 4. hType-specialized version of 5 for 4. 67VWX6An action that will be executed to provide the parser ; with more input, if necessary. The action must return an  8/ string when there is no more input available. Initial input for the parser. YZ[\]^9_`a:bcdefgh;G 9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefgh8:9 TVUXWYZS;MLN<>=OcdeJK@ABfCH?EIDghFGR[\^]_ab`PQ67VWXYZ[\]^9_`a:bcdefgh;unknown experimentalbos@serpentine.comNoneiThe result of a parse. jThe parse succeeded. The  ByteString is the 4 input that had not yet been consumed (if any) when  the parse succeeded. kThe parse failed. The  ByteString is the input 1 that had not yet been consumed when the failure  occurred. The [] is a list of contexts # in which the error occurred. The  is the ' message describing the error, if any. l$Run a parser and return its result. m6Run a parser and print its result to standard output. n Convert a i value to a - value. o Convert a i value to an . value. ijk<lmno=>?D:;<=>?@ABCDEFGHIJKLMNOPQRSUV[\]^_`abcdefghijklmnoikjlmno ikj<lmno=>?unknown experimentalbos@serpentine.comNonepIf a parser has returned a   result, supply it with more  input. q6Run a parser and print its result to standard output. r@Run a parser with an initial input string, and a monadic action ' that can supply more input if needed. s Convert a  value to a - value. A   result  is treated as failure. t Convert a  value to an . value. A    result is treated as failure. pqr6An action that will be executed to provide the parser ; with more input, if necessary. The action must return an  @/ string when there is no more input available. Initial input for the parser. st3  !"#$%&'()*+,-./01234678pqrst$ 7p8rqst6 0/12!#"-.%&$+(,')*34pqrstunknown experimentalbos@serpentine.comNone#u)Satisfy a literal string, ignoring case. v/Consume input as long as the predicate returns  , and return  the consumed input. CThis parser requires the predicate to succeed on at least one byte 7 of input: it will fail if the predicate never returns  or if  there is no input left. w The parser  satisfy p% succeeds for any byte for which the  predicate p returns $. Returns the byte that is actually  parsed. digit = satisfy isDigit + where isDigit c = c >= '0' && c <= '9' x-Match a letter, in the ISO-8859-15 encoding. y'Match a letter, in the ASCII encoding. z9A fast alphabetic predicate for the ISO-8859-15 encoding Note:: For all character encodings other than ISO-8859-15, and C almost all Unicode code points above U+00A3, this predicate gives   wrong answers. {3A fast alphabetic predicate for the ASCII encoding Note4: For all character encodings other than ASCII, and C almost all Unicode code points above U+007F, this predicate gives   wrong answers. |Parse a single digit. }A fast digit predicate. ~A fast digit predicate. Match any character. Match any character. Returns  if end of input has been & reached. Does not consume any input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. 4Fast predicate for matching ASCII space characters. Note:: This predicate only gives correct answers for the ASCII E encoding. For instance, it does not recognise U+00A0 (non-breaking D space) as a space character, even though it is a valid ISO-8859-15 ? byte. For a Unicode-aware and only slightly slower predicate,  use  Fast A0 predicate for matching ASCII space characters. Parse a space character. Note7: This parser only gives correct answers for the ASCII E encoding. For instance, it does not recognise U+00A0 (non-breaking D space) as a space character, even though it is a valid ISO-8859-15  byte. Match a specific character. +Match a specific character, but return its A value. *Match any character except the given one. Match any character in a set.  vowel = inClass "aeiou" Range notation is supported.   halfAlphabet = inClass "a-nA-N" To add a literal '-', to a set, place it at the beginning or end  of the string. "Match any character not in a set. /Consume input as long as the predicate returns  , and return  the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. =A stateful scanner. The predicate consumes and transforms a D state argument, and each transformed state is passed to successive B invocations of the predicate on each byte of the input until one  returns  or the input ends. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. /Consume input as long as the predicate returns   (i.e. until it returns "), and return the consumed input. BThis parser does not fail. It will return an empty string if the  predicate returns  on the first byte of input. Note8: Because this parser does not fail, do not use it with  combinators such as many$, because such parsers loop until a E failure occurs. Careless use will thus result in an infinite loop. 5Skip past input for as long as the predicate returns . Skip over white space. Type-specialized version of 3 for B. Type-specialized version of 5 for B. 2A predicate that matches either a carriage return '\r' or  newline '\n' character. (A predicate that matches either a space ' ' or horizontal tab  '\t' character. AParse and decode an unsigned hexadecimal number. The hex digits  'a' through 'f' may be upper or lower case. &This parser does not accept a leading "0x" string. -Parse and decode an unsigned decimal number. (Parse a number with an optional leading '+' or '-' sign  character. Parse a rational number. DThis parser accepts an optional leading sign character, followed by E at least one decimal digit. The syntax similar to that accepted by  the /. function, with the exception that a trailing '.' or  'e' not' followed by a number is not consumed. %Examples with behaviour identical to /, if you feed an empty # continuation to the first result:   rational "3" == Done 3.0 ""  rational "3.1" == Done 3.1 "" $rational "3e4" == Done 30000.0 "" %rational "3.1e4" == Done 31000.0, "" %Examples with behaviour identical to /:  =rational ".3" == Fail "input does not start with a digit" =rational "e3" == Fail "input does not start with a digit" Examples of differences from /:  $rational "3.foo" == Done 3.0 ".foo" !rational "3e" == Done 3.0 "e" 8This function does not accept string representations of "NaN" or  "Infinity". Parse a rational number. 6The syntax accepted by this parser is the same as for . Note0: This function is almost ten times faster than ,  but is slightly less accurate. The 4 type supports about 16 decimal places of accuracy. ) For 94.2% of numbers, this function and  give identical D results, but for the remaining 5.8%, this function loses precision = around the 15th decimal place. For 0.001% of numbers, this A function will lose precision at the 13th or 14th decimal place. 8This function does not accept string representations of "NaN" or  "Infinity". AParse a number, attempting to preserve both speed and precision. 6The syntax accepted by this parser is the same as for . Note0: This function is almost ten times faster than . A On integral inputs, it gives perfectly accurate answers, and on : floating point inputs, it is slightly less accurate than  . 8This function does not accept string representations of "NaN" or  "Infinity". )CDEuvwxyz{|}~FGHL  $%)*345678pqrstuvwxyz{|}~= 7p8qrst6 w|xy}~z{%u$v)*534(CDEuvwxyz{|}~FGHunknown experimentalbos@serpentine.comNoneL  $%)*345678pqrstuvwxyz{|}~ unknown experimentalbos@serpentine.comNoneThe result of a parse. The parse succeeded. The I is the 4 input that had not yet been consumed (if any) when  the parse succeeded. The parse failed. The I is the input 1 that had not yet been consumed when the failure  occurred. The [] is a list of contexts # in which the error occurred. The  is the ' message describing the error, if any. $Run a parser and return its result. 6Run a parser and print its result to standard output.  Convert a  value to a - value.  Convert a  value to an . value. JKLMN0 !"#$%&'()*+,-./0123468p JKLMNunknown experimentalbos@serpentine.comNone0 !"#$%&'()*+,-./0123468punknown experimentalbos@serpentine.comNone3  !"#$%&'()*+,-./01234678pqrstO     ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEF23456GH78IJ;<=>KLMNCDEFOPQRSTUVWXYZ[\]^_`a2!PRSOPQRSG<4bcde\fgKNh^LiM=>;87_`aTUVWXYZ[ 2  !  P R S j k l l m n opqrstuv2w!xxyz{|}~st j   l   m o pqpqpqppppppqpq      v     | } ~  psst{{ppppfppppp attoparsec-0.10.4.0Data.Attoparsec.ZeptoData.Attoparsec.NumberData.Attoparsec.TypesData.Attoparsec.TextData.Attoparsec.CombinatorData.Attoparsec.ByteString Data.Attoparsec.ByteString.Char8Data.Attoparsec.Text.LazyData.Attoparsec.ByteString.LazyData.Attoparsec.Text.FastSet"Data.Attoparsec.ByteString.FastSetData.Attoparsec.Internal.TypesData.Attoparsec.Internal#Data.Attoparsec.ByteString.InternalData.Attoparsec.Text.Internal Data.CharisSpaceData.Attoparsec.Char8Data.Attoparsec.LazyData.AttoparsecParserparse takeWhiletakestringatEndNumberDIIResultDonePartialFailcompareResultschoiceoptionmany'many1many1'sepBysepBy'sepBy1sepBy1'manyTill manyTill'skipMany skipMany1counteitherPResulttrysatisfyskip satisfyWith skipWhiletakeTilltakeByteStringtakeLazyByteStringscan takeWhile1inClass notInClassanyWord8word8notWord8 peekWord8 endOfInput endOfLine parseOnlystringCIasciiCItakeText takeLazyTextanyCharcharnotCharpeekCharfeed parseTest parseWith maybeResult eitherResult isEndOfLineisHorizontalSpace hexadecimaldecimalsignedrationaldoublenumberdigitletterspace skipSpace.*><*.letter_iso8859_15 letter_asciiisAlpha_iso8859_15 isAlpha_asciiisDigit isDigit_w8 isSpace_w8char8setmemberFastSetfromListmkSet charClassbaseGHC.Base>>=ghc-prim GHC.TypesTrue runParserOKSinputgetsput$fAlternativeParser$fMonoidParser$fApplicativeParser$fMonadPlusParser $fMonadParser$fFunctorParserDoublebinop$fRealFracNumber$fFractionalNumber $fRealNumber $fNumNumber $fOrdNumber $fEqNumber$fNFDataNumber $fShowNumber tableCutoff memberWord8 memberCharTableSortedfromSetshiftRshiftLindexmkTable $fShowFastSetMoreMonadfailFunctorControl.Applicative Applicative Control.Monad MonadPlusmzeromplus AlternativefmapString IncompleteCompleteSuccessFailureAddedAunAInputunIfmapRaddSbindPreturnPnoAddsplusfmapPapPfailDesc<> $fMonoidMore$fFunctorIResult$fNFDataIResult $fShowIResult Data.MaybeNothing GHC.ClassesEqliftM2'ensureprompt demandInput wantInputFalsetakeWithfailKsuccessKinlinePerformIOTensure'getstorablestringTransformtakeRestScanFinishedContinue lengthAtLeast unsafeHead unsafeTail unsafeTake unsafeDrop$fIsStringParserMaybe Data.EitherEither Text.Readread GHC.UnicodeisAlpha*> text-0.11.2.3Data.Text.InternalText<*empty isDecimalasDoublefloaty$fFunctorResult$fNFDataResult $fShowResultbytestring-0.10.0.2Data.ByteStringGHC.WordWord8Data.ByteString.Internal ByteStringtoLowerData.ByteString.Lazy.InternalrnfBS