RFC: std.json sucessor

via Digitalmars-d digitalmars-d at puremagic.com
Mon Aug 25 06:23:44 PDT 2014


On Monday, 25 August 2014 at 13:07:08 UTC, Don wrote:
> practice. So a JSON parser should at least be able to lex them.
>
> ie this should be parsable:
>
> {"foo": NaN, "bar": Infinity, "baz": -Infinity}
>
> You should also put tests in for what happens when you pass NaN 
> or infinity to toJSON. It shouldn't silently generate invalid 
> JSON.

I believe you are allowed to use very high exponents, though. 
Like: 1E999 . So you need to decide if those should be mapped to 
+Infinity or to the max value…

NaN also come in two forms with differing semantics: 
signalling(NaNs) and quiet (NaN).  NaN is used for 0/0 and 
sqrt(-1), but NaNs is used for illegal values and failure.

For some reason D does not seem to support this aspect of 
IEEE754? I cannot find ".nans" listed on the page 
http://dlang.org/property.html

The distinction is important when you do conditional branching. 
With NaNs you might not be able to figure out which branch to 
take since you might have missed out on a real value, with NaN 
you got the value (which is known to be not real) and you might 
be able to branch.


More information about the Digitalmars-d mailing list