Details of GNU Common Lisp's (type-of)

234 Views Asked by At

If at the REPL I enter:

(type-of (make-array 5))

then I get the response:

(SIMPLE-VECTOR 5)

Fair enough. So if at the REPL I enter:

(type-of (make-array (list 5 3 2)))

then I get the response:

(SIMPLE-ARRAY T (5 3 2))

I have two questions.

  1. What is the T telling me here? If it had been NIL instead, what would that have told me?
  2. Where could I have found this answer on my own? I failed to find the answer in (for example) the Lisp HyperSpec.
2

There are 2 best solutions below

1
On BEST ANSWER

(SIMPLE-ARRAY T (5 3 2)) is a simple array of three dimensions. T says that it is a general array which can contain any element type. T is the most general type.

The hyperspec documents the type SIMPLE-ARRAY here:

http://www.lispworks.com/documentation/HyperSpec/Body/t_smp_ar.htm

0
On

1) If the T had been NIL, you would have a three-dimensional array, specialised in not storing data (no element has the type NIL; I believe all types are a super-type of NIL).