module Data.ByteString.Read
( Source
, ReadFractional
, fractional
, double
, integral
, int
, signed
, module Data.ByteString.Read.DEPRECATED
) where
import Control.Arrow
import Data.ByteString.Read.Class as C
import Data.ByteString.Read.Integral
import Data.ByteString.Read.Fractional
import Data.ByteString.Read.DEPRECATED
signed :: (Source s, Num r) => (s -> Maybe (r, s)) -> s -> Maybe (r, s)
signed f s
| C.null s = Nothing
| C.head s == minus = first negate `fmap` f (C.tail s)
| C.head s == plus = f (C.tail s)
| otherwise = f s
where
minus = 45
plus = 43