Как определить тип данных переменной

На вопрос легко ответить (я думаю), но я искал какое-то время, не найдя ничего, поэтому я буду направлять свой вопрос к вам.

Существует typep, чтобы определить, имеет ли данная переменная какой-либо конкретный тип данных, например. integer, hashtable и т.д., но есть ли функция, которая возвращает тип данных?

например.

(defvar *x* 1)
*x*

(typep *x* 'integer)
T

(the-type-function *x*)
INTEGER

Ответ 1

Существует типp, чтобы определить, имеет ли данная переменная некоторый конкретный тип данных, например. целое число, хэш-таблица и т.д.,

Не совсем. В Common Lisp переменные не печатаются, как вы думаете.

(defvar *x* 1)
*x*

(typep *x* 'integer)
T

Выше ничего не говорится о типе переменной *x*. Он подтверждает, что объект 1 имеет тип integer.

но есть ли функция, которая возвращает тип данных?

Не совсем. Существует функция TYPE-OF, которая возвращает тип объекта, а не переменной.

> (type-of 1)
FIXNUM

Нет никакой разницы, когда мы получаем значение из переменной.

> (type-of *x*)
FIXNUM

Но это не означает, что переменная имеет этот тип.

Примечание. Общие Lisp имеют типы и типы объявлений. Но это выглядит несколько иначе.