Шаг 10.
Элементарные конструкторы для работы со списками

    Этот шаг посвящен знакомству с элементарными конструкторами.

   

Таблица 1. Элементарные конструкторы
Функция
Назначение
CONS
Строит список (точечную пару) из двух аргументов.
LIST
Возвращает список из значений аргументов.
REVERSE
Создает "перевернутый" список.
OBLIST
Создает и возвращает список обьектов, т.е. список активных на текущий момент символов в системе.
(LENGTH OBJECT)
Возвращает "длину" 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
В начало таблицы

    На следующем шаге мы продолжим изучение конструкторов.




Предыдущий шаг Содержание Следующий шаг