Skip to content

Instantly share code, notes, and snippets.

@tonymorris

tonymorris/jnumber.hs

Last active Dec 6, 2016
Embed
What would you like to do?
JSON Number
-- http://rfc7159.net/rfc7159#rfc.section.6
data Digit =
D0
| D1
| D2
| D3
| D4
| D5
| D6
| D7
| D8
| D9
deriving (Eq, Ord, Show)
data Digit1to9 =
D1_1to9
| D2_1to9
| D3_1to9
| D4_1to9
| D5_1to9
| D6_1to9
| D7_1to9
| D8_1to9
| D9_1to9
deriving (Eq, Ord, Show)
data JInt =
JZero
| JInt Digit1to9 [Digit]
deriving (Eq, Ord, Show)
data E =
EE
| Ee
deriving (Eq, Ord, Show)
newtype Frac =
Frac
(NonEmpty Digit)
deriving (Eq, Ord, Show)
data Exp =
Exp {
_e ::
E
, _minusplus ::
Bool
, _expdigits ::
NonEmpty Digit
}
deriving (Eq, Ord, Show)
data JNumber =
JNumber {
_minus ::
Bool
, _numberint ::
JInt
, _fracexp ::
Maybe (Frac, Maybe Exp)
}
deriving (Eq, Ord, Show)
parseJNumber ::
(Monad f, CharParsing f) =>
f JNumber
parseJNumber =
error "omitted"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment