Учебники

LISP — Типы данных

В LISP переменные не типизированы, а объекты данных.

Типы данных LISP могут быть классифицированы как.

  • Скалярные типы — например, числовые типы, символы, символы и т. Д.

  • Структуры данных — например, списки, векторы, битовые векторы и строки.

Скалярные типы — например, числовые типы, символы, символы и т. Д.

Структуры данных — например, списки, векторы, битовые векторы и строки.

Любая переменная может принимать любой объект LISP в качестве значения, если вы не объявили это явно.

Хотя нет необходимости указывать тип данных для переменной LISP, тем не менее, это помогает в определенных расширениях цикла, в объявлениях методов и некоторых других ситуациях, которые мы обсудим в следующих главах.

Типы данных организованы в иерархию. Тип данных — это набор объектов LISP, и многие объекты могут принадлежать одному такому набору.

Предикат typep используется для определения, принадлежит ли объект определенному типу.

Функция type-of возвращает тип данных данного объекта.

Спецификаторы типов в LISP

Спецификаторы типов — это системные символы для типов данных.

массив Fixnum пакет простая строка
атом поплавок путь к файлу простой вектор
bignum функция случайное состояние одного поплавка
немного хеш-таблица соотношение Стандарт-символ
битовый вектор целое число рациональный поток
персонаж ключевое слово readtable строка
[Общий] список последовательность [Строка-символ]
скомпилированная функция давно поплавок короткого поплавок условное обозначение
сложный Нилл зарегистрированы байты T
минусы ноль простой массив без знака байта
двойной поплавок число простой бит-вектор вектор

Помимо этих системных типов, вы можете создавать свои собственные типы данных. Когда тип структуры определяется с помощью функции defstruct , имя типа структуры становится допустимым символом типа.

Пример 1

Создайте новый файл исходного кода с именем main.lisp и введите в него следующий код.

Live Demo

(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 и введите в нем следующий код.

Live Demo

(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 выполняет его немедленно, и возвращается результат —