[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: #o, picky picky

Your answer to my question about the VAX indicates your confusion
about my confusion about your ambiguity.  My point is that unless
you are worrying about fitting some bits into a finite box
of definite size (i.e., a fixnum) then the distinction between
signed and unsigned numbers is unimportant.  After all, the
difference between them is merely that a certain bit at a fixed
distance from bit 0 gets interpreted differently (as a sign bit
or just another data bit).

The problem is that you have underspecified your notion of
the semantics of the proposed "unsigned number syntax".
Supposing fixnums are 28 bits long, and all larger numbers are
bignums, then as I understand your proposal:
#o*777777777  (nine sevens) is the same as #o777777777  (uninteresting case)
#o*1777777777  internally becomes the same as -1, but you don't
	care because the 28 bits of interest are all there.

Two points:
(a) if the above descriptions are substantially correct, then would you care
whether #o*7777777777 (ten sevens) read in as -1 (low 30 bits are still
all ones)?  How about #o*7000000000 reading as #o-1000000000 ?

(b) on the other hand, the second point of understanding above is
*not consistent*.  I claim that it is incorrect to convert the syntax
#o*1777777777 to an internal fixnum -1, because there is nothing
whatsoever in the syntax that says that only 28 bits are significant.
Perhaps I intend there to be 30 significant bits there, of which
the two high-order bits happen to be zero.