# [racket-dev] `math' compilation time !!!

Why is Nonnegative-Real not suggestive of the right thing? To me that
means (and/c real? (not/c (lambda (x) (< x 0)))) which is exactly what
it is.
I think the confusing part is that -0.0 has a minus sign in front
which means that you think it is negative, but this isn't true.
On Fri, Mar 1, 2013 at 8:31 AM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
>* Is there perhaps a more suggestive name? (Not that I'm coming up with
*>* one...)
*>*
*>* Robby
*>*
*>*
*>* On Fri, Mar 1, 2013 at 10:22 AM, Vincent St-Amour <stamourv at ccs.neu.edu>
*>* wrote:
*>>*
*>>* At Fri, 01 Mar 2013 09:05:21 +0100,
*>>* Marijn wrote:
*>>* > On 27-02-13 21:51, Neil Toronto wrote:
*>>* >
*>>* > > (An example that came up in the implementation of matrix norms: the
*>>* > > type of (sqrt (/ 1 x)) isn't Nonnegative-Real if x :
*>>* > > Nonnegative-Real, but Complex. Consider x = -0.0. Without TR's
*>>* > > complaints, `matrix-norm' would have contained a time bomb.)
*>>* >
*>>* > Should -0.0 really be a Nonnegative-Real?
*>>*
*>>* That's by design.
*>>*
*>>* Including both floating-point zeroes in both non-negative and
*>>* non-positive types is necessary to make occurrence typing useful for
*>>* comparisons between floating-point numbers and zero (see PR12706 for
*>>* more details). It also simplifies parts of the numeric base environment
*>>* significantly.
*>>*
*>>* Vincent
*>>*
*>>* _________________________
*>>* Racket Developers list:
*>>* http://lists.racket-lang.org/dev
*>*
*>*
*>*
*>* _________________________
*>* Racket Developers list:
*>* http://lists.racket-lang.org/dev
*>*
*