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

Reply via email to