Скачиваний:
8
Добавлен:
01.05.2014
Размер:
6.44 Кб
Скачать

Шаг 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 В начало таблицы

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

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

Соседние файлы в папке Язык программирования ЛИСП