> On Dec 10, 2015, at 9:50 AM, George Neuner <[email protected]> wrote: > > On Thu, 10 Dec 2015 12:35:34 -0500, Alex Knauth > <[email protected]> wrote: > >> In typed racket (- 1 1) and (- 2 2) are equal at runtime, but the type >> checker doesn't necessarily know that at compile time. It knows that >> (- 1 1) is zero because that's a special case in the type system. But it >> doesn't have a special case for (- 2 2), so it only knows that that's a >> Fixnum. > > But in this case the type checker isn't dealing with variables. Which > begs the question why is (- 1 1) special cased? Shouldn't there be a > general rule: (- C C) where C is a numeric constant? > [Ok, I know equality is a problem with floating point ... but, still, > the principle remains.]
Check out the numeric tower in TR: there’s a type that includes just the number 1. The natural extension to all numbers (each number has its own type) leads (IIUC) to a totally intractable type system. John > > George > > -- > You received this message because you are subscribed to the Google Groups > "Racket Users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

