Marcin 'Qrczak' Kowalczyk wrote:
Per Bothner <per@xxxxxxxxxxx> writes:Since it *optional* static typing, I'm assuming that the specific operations are "consistent" in the sense of the following example: If (and (fixnum? x) (fixnum? y)) then: (eqv? (+ x y) (fx+ x y))It's not the same: (fx+ x y) returns a fixnum even if it overflows.
As I wrote: I'm *assuming* that + when operating on fixnums will return a fixnum even if it "overflows". I.e. that arithmetic on fixnums are defined "modularly" and fixnums are *not* just a subset of the integers. This implies that (fixnum? 0) is not true, though of course 0 can be trivially *converted* to a fixnum: (fixnum? (as <fixnum> 0)) is true. I can see that this might be a bit too radical. -- --Per Bothner per@xxxxxxxxxxx http://per.bothner.com/