我想知道是不是因为我不了解defparameter宏的核心。
所以,这给出了一个奇怪的错误。我开始:
(defparameter * x *#(1 4 7))(defparameter * y *#(2 3 55))…
关于 mod 在错误消息中,这是一个类型说明符: (mod 4611686018427387901) 意思是“0到4611之间的整数...”,大数字是 array-dimension-limit 。
mod
(mod 4611686018427387901)
array-dimension-limit
CL-USER 28 > (defparameter *y* #(2 3 55)) *Y* CL-USER 29 > * *Y*
的价值 * 是最后一个顶级评估结果的第一个值。
*
在你的情况下,价值是 *y* - 一个符号。然后你打电话 MAKE-ARRAY 用那个符号作为第一个参数。 MAKE-ARRAY 不期望一个符号 - 因此错误:
*y*
MAKE-ARRAY
The value *Y* is not of type (OR (MOD 4611686018427387901) CONS NULL) when binding SB-VM::DIMENSIONS [Condition of type TYPE-ERROR]
错误意味着:符号 *y* 既不是数字(具有特定的最大大小)也不是列表。记得 *y* 是评估的结果 * 。