Очень краткое введение в язык Лисп [Б. Л. Файфель] (pdf) читать постранично

-  Очень краткое введение в язык Лисп  981 Кб, 73с. скачать: (pdf) - (pdf+fbd)  читать: (полностью) - (постранично) - Б. Л. Файфель

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

Очень краткое введение в язык Лисп
Обращение к читателю.
Честно говоря, автор первоначально не планировал излагать в этом руководстве основы
Лиспа. Однако, изучив литературу, изданную по Лиспу на русском языке, автор вынужден
признать, что она весьма немногочисленна, а последняя книга по Лиспу издана почти
20 лет назад. Получается, что читатель, не знакомый с Лиспом, вынужден либо искать
библиографические редкости, либо что-то качать из Интернета.
Хорошая документация должна быть самодостаточна; это обстоятельство и послужило
причиной написания раздела, разъясняющего основы Лиспа.
Наиболее просто синтаксис Лиспа можно было бы описать с помощью Бэкусовых
Нормальных Форм (БНФ), но такое описание слишком лаконично для новичка. Поэтому
пришлось пойти на компромисс: вместо Бэкусовых форм основы Лиспа
описываются словами. При изучении начальных разделов, описывающих
архитектуру языка, читателю рекомендуется смотреть на язык Лисп, как
наформальную знаковую систему. Автор полагает, что это - самый простой способ
осознанного понимания правила записи выражений Лиспа. После развернутого изложения
правил составления выражений Лиспа приводятся сведения
о внутреннем представлении выражений. Начиная с этого момента формальная
знаковая система наполняется неформальным содержанием.
Настоящий раздел руководства был написан последним. Это привело к тому, что многие
сведения в документации встречаются дважды - в этом разделе и при описании
соответствующих функций. Автор надеется, что подобная избыточность не так уж плоха читатель, знакомый с языком, может пропустить это введение, а читателю-новичку, не до
конца принявшему идеологию Лиспа, в процессе чтения описания встроенных функций
классического Лиспа будет даваться идеологические разъяснения.
В заключение, автор просит извинения у искушенного читателя (если он сюда забредет!)
за навязчивое объяснение элементарных вещей...

Оглавление
Лисп-машина.
Алфавит языка Лисп.
Атомы.
Точечные пары - "молекулы" Лиспа.
S-выражения.
Списки.
Внутреннее представление списков.

Взаимодействие с Лисп-машиной. Вычисление значений.
Вычисление значений функций Лиспа.
Проблема вычисляемых аргументов. Классификация
функций Лиспа.
Диалог с Лисп-машиной.
Блокировка вычислений. Функция QUOTE.
Присвоение значений атомам. Функции SET, SETQ и
CSETQ.
Разбор списков на составные части. Функции CAR, CDR и
их комбинации.
Построение списков из составных частей. Функции CONS
и LIST.
Проверка на "атомность". Функция АТОМ.
Сравнение атомов. Функции EQ, NEQ, NOT и NULL.
Функция COND.
Арифметические функции Лиспа.
Универсальная функция EVAL.
Создание собственных функций. Функция DEFUN.
Приемы программирования на Лиспе. Рекурсия.
Рекурсия "изнутри". Трассировка выполнения. Функции
TRACE и UNTRACE.
Другие примеры рекурсивных функций.
Безымянные функции. Конструкция LAMBDA.
Функциональные аргументы. Функционалы.
Применяющие функционалы. Функции FUNCALL и APPLY.
Отображающие функционалы. Функции MAPLIST и
MAPCAR.
Две парадигмы программирования. Функциональное и
процедурное программирование.
Процедурное программирование в Лиспе. Функция PROG.
Функции типа FEXPR. Функция DEFUNF.

Функции типа MACRO. Функция DEFMACRO.
Лисп - язык символьного программирования.
Контекст вычисления в HomeLisp.
Динамические и лексические переменные.
Списки свойств атомов.

Лисп-машина.
Любой язык программирования предназначен для кодирования команд, которые
выполняет компьютер. Результатом выполнения команд является все то, ради чего
человек использует вычислительную технику (обработка текста, графика, звук, расчеты и
т.д.). Процессор компьютера, как правило, умеет исполнять только элементарные
команды. Поэтому команды, написанные человеком, обычно преобразуются
(транслируются) в команды процессора. Возможен и другой подход, при котором
программа на языке программирования не преобразуется в команды процессора, а
поступает на вход программы-исполнителя (интерпретируется).
Именно так работает Лисп.
Будем далее называть программу, исполняющую команды Лиспа, Лисп-машиной. В
ранних версиях Лиспа взаимодействие с пользователем было построено на принципе
"запрос - ответ". В настоящее время Лисп-машина может быть реализована и как
диалоговая, и как пакетная. Последнее означает, что программа Лисп-машины стартует,
считывает команды из какого-либо источника (например, из файла), выполняет эти
команды, и завершается. Для изучения языка Лисп важно то, что программа на языке
Лисп состоит из команд, которые исполняются Лисп-машиной.

Алфавит языка Лисп.
Алфавит языка Лисп включает в себя заглавные и строчные латинские буквы, цифры и
все специальные знаки, которые есть на клавиатуре. Буквы национальных языков
традиционно в алфавит не входят, хотя нет никаких особых запретов на этот счет. В
частности, в алфавит