Этот шаг посвящен знакомству с элементарными конструкторами.
Строит список (точечную пару) из двух аргументов. | |
Возвращает список из значений аргументов. | |
Создает "перевернутый" список. | |
Создает и возвращает список обьектов, т.е. список активных на текущий момент символов в системе. | |
Возвращает "длину" OBJECT, соответствующую его типу. |
1. Функция CONS позволяет построить список (точечную пару) из двух аргументов:
первый аргумент - S-выражение, второй аргумент - список.
Синтаксис обращения к функции:
(CONS S-выражение Список)
Селекторы CAR и CDR являются обратными для конструктора CONS.
Список, "разбитый" с помощью функций CAR и CDR на голову и хвост,
можно восстановить с помощью функции CONS. Например:
$ (CONS (CAR (1 2 3)) (CDR (1 2 3)))
(1 2 3)
Вторым аргументом может быть и и атом, но в таком случае функция возвращает
точечную пару. Например:
$ (CONS A B)
(A . B)
По определению функции CONS список, состоящий из одного элемента,
формируется так:
$ (CONS A NIL)
(A)
С учетом этого построение списков нетрудно свести к вложенным вызовам функции
CONS, причем вторым аргументом последнего вызова является NIL,
служащий основой для наращивания списка. Например:
$ (CONS A (CONS B (CONS C NIL)))
(A B C)
В начало таблицы
2. Функция LIST возвращает список из значений аргументов. Количество аргументов
произвольно. При этом создается новый список, вложенный на один уровень круглых
скобок глубже любого ее аргумента. Например:
$ (LIST 1 2 3)
(1 2 3)
$ (LIST (1 2 3) 4 (5))
((1 2 3) 4 (5))
В начало таблицы
3. Функция REVERSE позволяет создать "перевернутый" список. Отметим,
что исходный список при этом не изменяется! Например:
$ (REVERSE (1 2 3))
(3 2 1)
В начало таблицы
4. Функция OBLIST создает и возвращает список обьектов, т.е. список активных на текущий момент символов в системе. Символы располагаются в том порядке, в котором они были считаны и (или) сгенерированы: более новые символы располагаются "слева" от более старых. Отметим, что ненужные символы автоматически удаляются сборщиком мусора.
Обращение к функции выглядит так:
$ (OBLIST)
Список объектов используется при появлении нового объекта для выяснения, действительно
ли этот объект новый или он уже встречался в программе.
В начало таблицы
5. Функция (LENGTH OBJECT) возвращает "длину" OBJECT, соответствующую его типу.
Если OBJECT есть NIL или точечная пара, то функция LENGTH возвращает количество точечных пар высокого уровня (т.е. элементов) в обьекте.
Если OBJECT - атом, то функция LENGTH возвращает количество символов в Р-имени OBJECT.
Если OBJECT - число, то функция LENGTH возвращает количество слов
(слово равно 2-м байтам), требуемых для размещения числового вектора OBJECT.
Например:
$ (LENGTH (A B C D)) $ (LENGTH MULISP)
4 6
$ (LENGTH NIL) $ (LENGTH -13)
0 3
В начало таблицы
На следующем шаге мы продолжим изучение конструкторов.