如果我正确理解了Common Lisp标准的Section 15.1.2.1,那么(upgraded-array-element-type '(unsigned-byte 8))
'(unsigned-byte 16)
甚至是t
就完全合法了。因此,我的问题是实施的实际行为。
今天是否有使用'(unsigned-byte 8)
或'(unsigned-byte 16)
升级的实施?换句话说,以下是假的:
(and (subtypep (upgraded-array-element-type '(unsigned-byte 8)) '(unsigned-byte 8))
(subtypep (upgraded-array-element-type '(unsigned-byte 16)) '(unsigned-byte 16))
(对于SBCL,CLISP,Allegro CL,Clozure CL和LispWorks,表达式是正确的。)
答案 0 :(得分:1)
ECL可能不支持'(unsigned-byte 16)