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).

simple-type-error を調べたところ、値が予期しない型の場合に発生すると思います。しかし、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 に答える