В LISP переменные не типизированы, а объекты данных.
Типы данных LISP могут быть классифицированы как.
-
Скалярные типы — например, числовые типы, символы, символы и т. Д.
-
Структуры данных — например, списки, векторы, битовые векторы и строки.
Скалярные типы — например, числовые типы, символы, символы и т. Д.
Структуры данных — например, списки, векторы, битовые векторы и строки.
Любая переменная может принимать любой объект LISP в качестве значения, если вы не объявили это явно.
Хотя нет необходимости указывать тип данных для переменной LISP, тем не менее, это помогает в определенных расширениях цикла, в объявлениях методов и некоторых других ситуациях, которые мы обсудим в следующих главах.
Типы данных организованы в иерархию. Тип данных — это набор объектов LISP, и многие объекты могут принадлежать одному такому набору.
Предикат typep используется для определения, принадлежит ли объект определенному типу.
Функция type-of возвращает тип данных данного объекта.
Спецификаторы типов в LISP
Спецификаторы типов — это системные символы для типов данных.
массив | Fixnum | пакет | простая строка |
атом | поплавок | путь к файлу | простой вектор |
bignum | функция | случайное состояние | одного поплавка |
немного | хеш-таблица | соотношение | Стандарт-символ |
битовый вектор | целое число | рациональный | поток |
персонаж | ключевое слово | readtable | строка |
[Общий] | список | последовательность | [Строка-символ] |
скомпилированная функция | давно поплавок | короткого поплавок | условное обозначение |
сложный | Нилл | зарегистрированы байты | T |
минусы | ноль | простой массив | без знака байта |
двойной поплавок | число | простой бит-вектор | вектор |
Помимо этих системных типов, вы можете создавать свои собственные типы данных. Когда тип структуры определяется с помощью функции defstruct , имя типа структуры становится допустимым символом типа.
Пример 1
Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.
(setq x 10) (setq y 34.567) (setq ch nil) (setq n 123.78) (setq bg 11.0e+4) (setq r 124/2) (print x) (print y) (print n) (print ch) (print bg) (print r)
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат —
10 34.567 123.78 NIL 110000.0 62
Пример 2
Далее давайте проверим типы переменных, использованных в предыдущем примере. Создайте новый файл исходного кода с именем main. lisp и введите в нем следующий код.
(defvar x 10) (defvar y 34.567) (defvar ch nil) (defvar n 123.78) (defvar bg 11.0e+4) (defvar r 124/2) (print (type-of x)) (print (type-of y)) (print (type-of n)) (print (type-of ch)) (print (type-of bg)) (print (type-of r))
Когда вы нажимаете кнопку «Выполнить» или нажимаете Ctrl + E, LISP выполняет его немедленно, и возвращается результат —