streamly-0.8.3: Dataflow programming and declarative concurrency
Copyright(c) 2021 Composewell Technologies
LicenseBSD-3-Clause
Maintainerstreamly@composewell.com
Stabilityexperimental
PortabilityGHC
Safe HaskellSafe-Inferred
LanguageHaskell2010

Streamly.Internal.Unicode.Char.Parser

Description

To parse a text input, use the decode routines from Streamly.Unicode.Stream module to convert an input byte stream to a Unicode Char stream and then use these parsers on the Char stream.

Synopsis

Documentation

char :: MonadCatch m => Char -> Parser m Char Char Source #

Match a specific character.

decimal :: (MonadCatch m, Integral a) => Parser m Char a Source #

Parse and decode an unsigned integral decimal number.

double :: Parser m Char Double Source #

Parse a Double.

This parser accepts an optional leading sign character, followed by at most one decimal digit. The syntax is similar to that accepted by the read function, with the exception that a trailing '.' is consumed.

Examples

Examples with behaviour identical to read, if you feed an empty continuation to the first result:

IS.parse double (IS.fromList "3")     == 3.0
IS.parse double (IS.fromList "3.1")   == 3.1
IS.parse double (IS.fromList "3e4")   == 30000.0
IS.parse double (IS.fromList "3.1e4") == 31000.0
IS.parse double (IS.fromList "3e")    == 30

Examples with behaviour identical to read:

IS.parse (IS.fromList ".3")    == error "Parse failed"
IS.parse (IS.fromList "e3")    == error "Parse failed"

Example of difference from read:

IS.parse double (IS.fromList "3.foo") == 3.0

This function does not accept string representations of "NaN" or "Infinity".

Unimplemented

hexadecimal :: (MonadCatch m, Integral a, Bits a) => Parser m Char a Source #

Parse and decode an unsigned integral hexadecimal number. The hex digits 'a' through 'f' may be upper or lower case.

Note: This parser does not accept a leading "0x" string.

signed :: (Num a, MonadCatch m) => Parser m Char a -> Parser m Char a Source #

Allow an optional leading '+' or '-' sign character before any parser.