From: Raymond Toy
Subject: upgraded-array-element-type
Date: 
Message-ID: <4nbsgulqf0.fsf@rtp.ericsson.se>
Let's say you've declared an array of type (array (unsigned-byte 17))
and your platform supports specialized arrays of type (unsigned-byte
32), (signed-byte 32), and fixnum (where fixnum is at least 18 bits
long).

What would you expect the upgraded-array-element-type to be on his
platform? 

From the CLHS, I think fixnum or (unsigned-byte 32) or (signed-byte
32) would be valid answers since the given type is a subtype of all of
these.

One could argue for (unsigned-byte 32) since the original type is
unsigned.  But fixnum would also work, with the "odd" effect that you
could store a negative number into your array.  I would consider this
a programmer error, though.

However, what are people's expectations in this case?  

Just curious.  CMUCL upgrades to (unsigned-byte 32) basically because
that's the order of a parameter in the compiler when it looks to
upgrade an element type.  Don't have anything else to try it on.

Ray