我不知道是不是因为我不了解defparameter宏的核心。
所以,这是个奇怪的错误我先说:
(defparameter *x* #(1 4 7))
(defparameter *y* #(2 3 55))
一切都很好,但接下来是:
(defparameter *res* (make-array * :adjustable t :fill-pointer 0))
犯了一个我根本不明白的错误:
The value
*Y*
is not of type
(OR (MOD 4611686018427387901) CONS NULL)
when binding SB-VM::DIMENSIONS
[Condition of type TYPE-ERROR]
最佳答案
*
计算为最后计算的值,即符号*Y*
的值,该符号是数组#(2 3 55)
。
但是make-array
期望它的第一个参数指定它创建的数组的“维数”:
使数组维数和键元素类型初始元素初始内容
可调填充指针移位到移位的索引偏移量
=>新阵列
参数和值:
维度---有效数组维度列表的指示符
... 一份清单。
(强调我的)有些列表是null
s,有些是cons
es但不能排列符号。
因为它需要一个列表designator,即。
一个非零原子(表示元素为该非零原子的单原子列表)或一个适当的列表(表示其本身),
另一种可能性是一个整数。
关于global-variables - defparameter的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52736742/