4

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.
Bill Evans at Mariposa
  • 3,590
  • 1
  • 18
  • 22

2 Answers2

8

(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

Rainer Joswig
  • 136,269
  • 10
  • 221
  • 346
  • Ooo. Thanks! Your link was tough sledding for me, but ultimately useful! I figured out, for example, that (type-of (make-array 5 :element-type (integer 0 255))) yields (SIMPLE-ARRAY (UNSIGNED-BYTE 8) (5)). – Bill Evans at Mariposa Dec 01 '11 at 14:29
1

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

Vatine
  • 20,782
  • 4
  • 54
  • 70