If I understand Section 15.1.2.1 of the Common Lisp standard correctly, it is perfectly legal for (upgraded-array-element-type '(unsigned-byte 8))
to be '(unsigned-byte 16)
, or even t
. My question is therefore about the actual behavior of implementations.
Are there any implementations in use today where '(unsigned-byte 8)
or '(unsigned-byte 16)
are upgraded? In other words, where the following is false:
(and (subtypep (upgraded-array-element-type '(unsigned-byte 8)) '(unsigned-byte 8))
(subtypep (upgraded-array-element-type '(unsigned-byte 16)) '(unsigned-byte 16))
(The expression is true for SBCL, CLISP, Allegro CL, Clozure CL, and LispWorks.)