简单型错误

时间:2012-11-29 13:27:51

标签: arrays types lisp common-lisp

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

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中指定类型。

1 个答案:

答案 0 :(得分: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范围内的整数。