This is a good point. Do you need the first countable ordinal ω
("omega"), or an object introduced by a compactification of a
topological space? My proposal was for adding the latter.
They're different kinds of infinities, with different properties. For
example, there's no -ω. (Well, unless you define it. It might represent
something weird like the length of infinite "anti"-lists. Whatever those
might be.)
When you write "size," do you mean length or cardinality? If you mean
length, just having +inf or ω may not be enough: the length of two
infinite lists appended together is ω + ω, a strictly larger infinity.
If you're only concerned with the cardinality of all the elements as a
set, though, just having +inf or ω would work out: the number of
elements of two infinite lists appended together is just ω.
Or if you never append these infinite things whose size you're keeping
track of, or always interleave them to combine them, just +inf or ω
would be fine as well.
Neil ⊥
On 03/04/2014 10:54 AM, J. Ian Johnson 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>
To: 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