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