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.
2
  • GNU Common Lisp (short GCL) and GNU CLISP are two different implementations of Common Lisp. You don't need to tag general questions with all kinds of implementation names. Commented Jan 3, 2012 at 19:20
  • Ooo. Thank you. Had no idea. Commented Jan 10, 2012 at 9:45

2 Answers 2

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

Sign up to request clarification or add additional context in comments.

1 Comment

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.