Подробная информация о GNU Common Lisp's (тип) - PullRequest
4 голосов
/ 01 декабря 2011

Если в REPL я введу:

(type-of (make-array 5))

, то получу ответ:

(SIMPLE-VECTOR 5)

Достаточно справедливо.Поэтому, если в REPL я ввожу:

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

, тогда я получаю ответ:

(SIMPLE-ARRAY T (5 3 2))

У меня два вопроса.

  1. Что такое T говорит мне здесь?Если бы вместо этого было NIL, что бы это мне сказали?
  2. Где я мог бы найти этот ответ самостоятельно?Я не смог найти ответ (например) в Lisp HyperSpec.

Ответы [ 2 ]

8 голосов
/ 01 декабря 2011

(SIMPLE-ARRAY T (5 3 2)) - это простой массив из трех измерений. T говорит, что это общий массив, который может содержать элемент любого типа. T является наиболее общим типом.

Гиперспец документирует тип SIMPLE-ARRAY здесь:

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

1 голос
/ 01 декабря 2011

1) Если бы T был NIL, у вас был бы трехмерный массив, специализированный на том, чтобы не хранить данные (ни один элемент не имеет типа NIL; я считаю, что все типы являются супертипом NIL).

...