我制作了一个包含对数组调用的可执行文件。当我执行程序时,我收到错误
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中指定类型。
答案 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范围内的整数。