- •1Базовые функции обработки списков.
- •2Определение и вызов функций с помощью λ-выражений. Λ-список, λ-преобразование. Свободные и связанные переменные. Функция defun
- •3Локальные определения (форма let).
- •4Функции более высокого порядка. Функциональный аргумент, функциональное значение. Способы композиции функций.
- •5Автоматическое управление памятью в Лиспе. «Сборка мусора».
- •11Какую (двоякую) роль играет в Лиспе функция eval?
- •12Возвращение функцией нескольких величин.
- •13Базовые функции Лиспа.
- •14Опишите три варианта предиката равенства в Лиспе.
- •1Равенство в Прологе.
- •2Встроенные предикаты. Предикаты взаимодействия.
- •4Аппарат вычислений. Обработка списков.
- •5Аппарат вычислений. Рекурсивные определения в Прологе.
- •6Аппарат вычислений. Управление откатом: отсечение.
- •7Аппарат вычислений. Поиск в глубину с возвратом.
- •8Аппарат вычислений. Вывод и процедура отката.
- •9Аппарат вычислений. Процедура унификации в Прологе.
- •10Синтаксис данных (термы и основные объекты Пролога).
- •11Структура программы в языке Пролог (синтаксис языка).
- •12Логическая и управляющая компоненты Пролога.
- •14Общая характеристика языка Пролог.
13Базовые функции Лиспа.
Функции для атомов и пар:
cons car cdr eq atom
Объявление и управление:
cond lambda define eval quote
Функции с побочным эффектом
rplaca rplacd
Функция CONS, принадлежащая к классу SUBR, объединяет значения двух своих аргументов в точечную пару. Если значением первого аргумента является атом, а второго - список, то результатом функции CONS будет список, голова которого есть значение первого аргумента, а хвост - значение второго.
Функция CAR возвращает голову списка или ключевой (первый) элемент точечной пары (конса). (car `(a b c d)) => A
Функция CDR возвращает хвост списка или второй элемент точечной пары (конса).(cdr `(a b c d)) => (B C D)
Функция EQ, относящаяся к классу SUBR принимает два аргумента. Она работает следующим образом:
Если значением первого и второго аргумента является один и тот же атом, то функция возвращает в качестве результата атом T; Во всех остальных случаях функция возвращает атом Nil.
Функция ATOM. Эта функция возвращает атом T, если значение ее единственного аргумента есть атом, и Nil в противном случае.
Функция COND, принадлежащая к классу FSUBR, принимает произвольное количество аргументов. Каждый аргумент функции COND должен быть списком ровно из двух элементов. Первый из этих элементов будем называть условием, а второй - результатом. Таким образом, общий вид вызова COND таков: (COND (Условие1 Результат1) (Условие2 Результат2) ... (Условиеn Результатn))
lambdа-функция - это элементарная функция контекстного вызова.
(DEFUN ATOM LAMBDA-выражение) Функция DEFUN соединяет атом ATOM с LAMBDA-выражением, и ATOM начинает представлять (именовать) определенные этим лямбда-выражением вычисления. Функция DEFUN возвращает имя новой функции.
QUOTE - специальная функция с одним аргументом, которая возвращает в качестве значения этот аргумент.
Функция EVAL позволяет снять блокировку QUOTE.
14Опишите три варианта предиката равенства в Лиспе.
Common Lisp предоставляет ряд предикатов для проверки равенства двух объектов: eq (наиболее частный), eql, equal и equalp (наиболее общий). eq и equal имеют значения традиционные в Lisp’е. eql был добавлен, потому что он часто бывает необходим, и equalp был добавлен преимущественно, как версия equal, которая игнорирует различия типов при сравнении двух чисел и различия регистров при сравнении строковых символов. Если два объекта удовлетворяют любому из этих предикатов, то они также удовлетворяют всем тем, которые носят более общий характер.
[Функция] eq x y
(eq x y) является истиной тогда и только тогда, когда, x и y являются идентичными объектами.
[Функция] eql x y
Предикат eql истинен, если его аргументы равны eq, или если это числа одинакового типа и с одинаковыми значениями, или если это одинаковые строковые символы.
[Функция] equal x y (equal 3 3.0) ложь (equal 3.0 3.0) истина
Предикат equal истинен, если его аргументы это структурно похожие (изоморфные) объекты. Грубое правило такое, что два объекта равны equal тогда и только тогда, когда одинаково их выводимое представление.
[Функция] equalp x y (equalp 3.0 3.0) истина (equalp 3 3.0) истина
Два объекта равны equalp, если они равны equal, если они строковые символы и удовлетворяют предикату char-equal, который игнорирует регистр и другие атрибуты символов, если они числа и имеют одинаковое значение, даже если числа разных типов, если они включает в себя элементы, которые также равны equalp.