我不知道是不是因为我不了解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期望它的第一个参数指定它创建的数组的“维数”:
使数组维数和键元素类型初始元素初始内容
可调填充指针移位到移位的索引偏移量
=>新阵列
参数和值:
维度---有效数组维度列表的指示符
... 一份清单。
(强调我的)有些列表是nulls,有些是conses但不能排列符号。
因为它需要一个列表designator,即。
一个非零原子(表示元素为该非零原子的单原子列表)或一个适当的列表(表示其本身),
另一种可能性是一个整数。

关于global-variables - defparameter的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52736742/

10-13 02:28