It was on [racket-bug], so it's kind of hard to find. Here it is:
http://bugs.racket-lang.org/query/?cmd=view&pr=14232
Search for "Neil" on the page.
I think +inf and -inf could be added to the numeric tower with little to
no effect on current programs. There would be no +nan, not only for
backwards compatibility, but also for guarantees: if an exact result is
well-defined (i.e. doesn't raise an error), it should be correct.
Neil ⊥
On 03/04/2014 11:24 AM, Robby Findler wrote:
I think that Neil \bot posted on this subject in this forum at some
point with a fairly optimistic message.
Robby
On Tue, Mar 4, 2014 at 11:54 AM, J. Ian Johnson <i...@ccs.neu.edu
<mailto:i...@ccs.neu.edu>> wrote:
It's a bit of a philosophical problem to have an "exact" infinity.
Writing your own such wrappers should not be too much work. I've
done similar constructions in my own work in analysis, simply using
the symbol 'ω for infinity.
-Ian
----- Original Message -----
From: "Max New" <maxs...@gmail.com <mailto:maxs...@gmail.com>>
To: users@racket-lang.org <mailto:users@racket-lang.org>
Sent: Tuesday, March 4, 2014 12:08:03 PM GMT -05:00 US/Canada Eastern
Subject: [racket] Exact Infinity?
I've been doing some work that uses a data structure that includes a
size that can be either a Natural number of Infinity ,a so-called
"extended natural number".
I've been using +inf.0 and gotten by using `<` and `infinite?` and
things have worked fine out of the box but now I need to take the
minimum of such numbers, but
> (min 0 +inf.0)
returns 0.0, an inexact 0. This behavior is expected:
http://docs.racket-lang.org/reference/generic-numbers.html?q=inf&q=min&q=min&q=list/c&q=-%3E&q=define/contract#%28def._%28%28quote._~23~25kernel%29._min%29%29
because +inf.0 (and +inf.f) is a floating point number and thus inexact.
I need to use exact naturals throughout however, so I can write a
wrapper that takes the floor of the number after a call to min or I
can define my own min that returns the original arguments.
(define (mymin a b)
(if (< a b) a b))
But would it be useful if exact infinities were added to the numeric
tower? I'll call them +inf and -inf. Most operations like +, * etc
could be defined easily though you would probably also want to add
an "exact" nan for say (+ +inf -inf). The operations would work
exactly the same way they do for inexact infinities, except
returning exact numbers when possible, so for example
(1 . / . +inf) ==> 0
(min 34 +inf) ==> 34
-Max Stewart New
____________________
Racket Users list:
http://lists.racket-lang.org/users
____________________
Racket Users list:
http://lists.racket-lang.org/users
____________________
Racket Users list:
http://lists.racket-lang.org/users
____________________
Racket Users list:
http://lists.racket-lang.org/users