foundation-0.0.15: Alternative prelude with batteries and no dependencies

Safe HaskellNone




readIntegral :: (HasNegation i, IntegralUpsize Word8 i, Additive i, Multiplicative i, IsIntegral i) => String -> Maybe i #

Read an Integer from a String

Consume an optional minus sign and many digits until end of string.

readNatural :: String -> Maybe Natural #

Read a Natural from a String

Consume many digits until end of string.

readDouble :: String -> Maybe Double #

Try to read a Double

readRational :: String -> Maybe Rational #

Try to read a floating number as a Rational

Note that for safety reason, only exponent between -10000 and 10000 is allowed as otherwise DoS/OOM is very likely. if you don't want this behavior, switching to a scientific type (not provided yet) that represent the exponent separately is the advised solution.

readFloatingExact :: String -> ReadFloatingCallback a -> Maybe a #

Read an Floating like number of the form:

numbers [ . numbers ] [ ( e | E ) [ - ] number ]

Call a function with:

  • A boolean representing if the number is negative
  • The digits part represented as a single natural number (123.456 is represented as 123456)
  • The number of digits in the fractional part (e.g. 123.456 => 3)
  • The exponent if any

The code is structured as a simple state machine that:

  • Optionally Consume a - sign
  • Consume number for the integral part
  • Optionally
  • Consume .
  • Consume remaining digits if not already end of string
  • Optionally Consume a e or E follow by an optional - and a number