0

我制作了一个可执行文件,其中包括对数组的调用。当我执行程序时,我得到了错误

Condition of type: SIMPLE-TYPE-ERROR
In function AREF, the index into the object
 #(0.00387149 3.0345068e-4 5.9720734e-4 -1.6648759e-5 0.058811672).
takes a value 5 out of the range (INTEGER 0 4).

我查找了简单类型错误,我相信它发生在值是意外类型时。但是我的印象是您不必在 Lisp 中指定类型。

4

1 回答 1

2

您不必这样做,但是当您使用错误类型的对象调用函数时,Lisp 系统可能会抱怨。

CL-USER 7 > (sin "a string")

Error: In SIN of ("a string") arguments should be of type NUMBER.

针对您的问题的 LispWorks 错误报告不那么“技术性”:

CL-USER 8 > (aref #(a b c d) 4)

Error: The subscript 4 exceeds the limit 3 for the first dimension 
of the array #(A B C D).

这是有道理的,因为维度是从零开始的。上述向量的索引为 0、1、2 和 3。但不是 4。

CL-USER 10 > (typep 4 '(integer 0 3))
NIL

所以 4 不是 0 到 3 范围内的整数。

于 2012-11-29T13:35:33.953 回答