[racket-dev] .1 evaluates to 0.0 [was Re: plot doesn't plot (inexact->exact: no exact representation for +nan.0)]
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On 29-12-11 09:55, Laurent wrote:
>>
>> you're certainly on the right track. I tried starting drracket in
>> this way:
>>
>> LC_ALL="en_US.UTF-8" drracket &
>>
>
> Same here: LC_ALL="en_US.UTF-8" gracket
>
> Welcome to Racket v5.2.0.6. This is a simple window for evaluating
> Racket expressions. Quit now and run DrRacket to get a better
> window. The current input port always returns eof.
>> .3
> 0.3
>>
>
> Great!
>
> *However*, this did not work with: LC_ALL="fr_FR.UTF-8" gracket
Because the french locale uses comma (,) as the decimal separator like
my dutch one and unlike the english one which uses dot (.). So when
the locale-aware C number reading function gets to it and sees (.) it
fails to recognize is as a valid number character. Now that I've
thought about it more the weird behavior where it starts working
correctly after having seen a number bigger than 1.0 smells like an
unmatched push/pop locale pair. Might this then not also cause quite a
big locale stack to be allocated? Finally I wanted to ask if it was
possible that the automated tests are run with a non-english or random
locale.
Matthew, I still wanted to remark that I find it strange that plain
racket did not exhibit the same locale-dependence. Do you have an
explanation for that? Does it read some >=1.0 float causing the locale
stack to become ``seeded'' (due to postulated unmatched push/pop).
BTW Perhaps coccinelle (http://coccinelle.lip6.fr/) can help identify
(and automatically fix) the unmatched uses of the locale stack.
Marijn
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iEYEARECAAYFAk78ND0ACgkQp/VmCx0OL2xrMwCgyRftnjOkQfIA3rpWKKwT7dKh
KaAAoIDRW5XBM9d87FQ1CbCVUhpXPREm
=Sw9a
-----END PGP SIGNATURE-----