Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ФЛ ответы.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
27.25 Кб
Скачать

1. Особенности программирования на функциональном языке. Основные элементы языка лисп. Определения атомов, s-выражений, списков.

Ф-ое программирование – является одним из классов языков самого высокого уровня. Воснове этих языков лежит понятие функции. Аргументом является вложенная функция. Программа представляет собой композиции функций.

Особенности языка ЛИСП:

- Данные и программы представлены одинаково – списками

- Язык интерпретирущий

- Необычный синтаксис

- Нет операторов присваивания, цикла и переходов

- Программы в несколько раз короче обычных программ.

Основные элементы:

- Атомы

- S-выражения

-Списки

Атомы:

- символьные (являются последовательностью букв, цифр и специальных знаков)

- числовые (являются последовательностью цифр возможно со знаками обознач. число)

Два стандартных атома T, nil.

S-выражение:

1. Атом есть S-выражение

2. Последовательность S-выражений, заключенная в скобки, является S-выражением (списком).

Пустой список – список, который не содержит ни одного элемента. Обозначается () либо NILб является атомом.

2. Понятие функции. Префиксная форма записи функций и арифметических выражений. Функция quote.

Функция является механически зафиксированным правилом преобразования входов в выходы.

Префиксная форма – имя функций или действия и сами аргументы записываются внутри скобок, т.е. в виде S-выражений. Пример: (g x), (f x y), (+ x y), (* x (+ y z)). Имя функции является первым элементом списка остальные аргументы.

(QUOTE S-выражени) – в качестве значения возвращает свой аргумент.

(quote (+ 2 3))

(+ 2 3)

3. Базовые функции: car, cdr, atom, eq, cons. Модификации функции eq.

Функция CAR возвращает в качестве значения первый элемент списка. Если в качестве аргумента использовать атом, то это вызовет сообщение об ошибке.

Функция CDR возвращает в качестве значения список без первого элемента. Для атома не определена.

Функция CONS – функция двух аргументов. Она конструирует новый список x, рассматривая значение первого аргумента как (car x), а значение второго как (cdr x). Функция CONS называется элементарным конструктором.

ATOM – проверяет, является ли аргумент атомом и выдает значение истина или ложь.

EQ- служит для установления идентичности S-выражений. Возвращает значение T, если они занимают одно и то же место в физической памяти, и NIL – в противном случае.

EQL – сравнивает однотипные числа

= - сравнивает числа различных типов

EQAL – устанавливает логическое равенство двух списков

4. Значения символов. Псевдофункции set и setq. Универсальная функция eval.

Символы задаются через ‘, перед числовыми атомами ставить ‘ не нужно

> ‘a a

> 2 2

SET

Функция вычисляет оба аргумента, результатом выдает последний эл-т

> (set ‘a ‘b)

b

SETQ

Присваевает символу значение

> (setq x ‘(a b))

Eval

Позволяет выполнить дополнительное вычисление над функцией

>( eval ‘(+ 1 2))

3

5. Внутреннее представление списков. Логическое и физическое равенство списков. Точечная пара.

Списочная ячейка состоит из двух полей car и cdr. Каждое из полей содержит указатель. Указатель может ссылаться на другую списочную ячейку или на некоторый другой лисповский объект. На саму ячейку могут указывать либо поля car, cdr других ячеек, либо символ.

Любой список можно представить в точечной записи. Точечная запись используется тогда, когда нужно сослаться на первые элементы списка, не выписывая полностью хвост.

6. λ-выражение, λ-вызов, λ-преобразование. Определение функции с именем.

λ-выражение имеет вид (Lambda (x1..xn) fn). (x1..xn) – формальные параметры, fn – тело функции. Телом функции является любая вычисляемая форма лиспа. (х1..хn) – лямбда список.

Чтобы применить таку функцию к фактическим параметрам, нужно поставить выражение на место вызова функции. (λ-выражение а1а2..аn) аi – фактические параметры.

((Lambda (x y) (+ (* x x) (* y y))) 2 3) - λ-вызов

таким образом λ-вызов получается применением функции cons к λ-выражению и списку аргументов.

Функция с именем: (defun имя λ-список тело).

Встроенные функции, управляющие вычислениями, обычно называют формами или предложениями.