On Tue, Nov 10, 2015 at 6:02 AM, William D Clinger <xxxxxx@ccs.neu.edu> wrote:
Alex Shinn wrote:

> First, with 3-bit tags the max fixnum is 2^28-1 = 268435455,
> half your value... and half the memory, which already means
> we have more than enough remaining memory to implement
> something like memcached.

I said "the largest positive fixnum is likely to be 536870911."
If you survey implementations that use 3-bit tags, you'll find
that most devote two tags to fixnums, doubling the fixnum range.
If your reasoning applies only to systems that don't do that,
then your argument applies only to systems whose performance is
likely to be unsatisfactory on other grounds.

I was referring specifically to using 3-bit tags for fixnums,
not necessarily for all types, which includes Bigloo and Gauche:

  http://trac.sacrideo.us/wg/wiki/FixnumInfo

Regardless, you still have 1/2 your memory when using hash sets.

> The keys could be fixnums.  Since we can use negative fixnums
> we already have more possible keys than the maximum number
> of buckets.

That's a consequence of SRFI 126's arbitrary restriction of hash
values to non-negative integers.
 
This is the same restriction in R6RS, libraries section 13.1:

  Hash-function should accept a key as an argument and
  should return a non-negative exact integer object. 

-- 
Alex