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

21. Основные примитивы Лиспа для обработки списка.

Список - структура, которая либо пуста, либо состоит из 2-х элементов: головы и хвоста

Примитивы работы со списками.

(car список) -> S-выражение

(cdr список) -> список

(cons s-выр список) -> список

(cons s-выр s-выражение) -> точечная пара

22. Графическое представление списка.

Графическое представление списка основано на представлении списочной ячейки, состоящей из 2-х полей.1ая половина указывает на голову, 2ая на хвост. Из цепочки ячеек можно составить одноуровневый список.

(atom s-выр) -> T/NIL

>(atom x)

nil

>(atom 'x)

T

(NULL список) -> T(если список явл. пустым)

23. Принципы работы с памятью функциональной и логической программы

В функциональном и логическом программировании имеющиеся в памяти структуры не разрушаются. Функциональная программа генерирует новые структуры из уже имеющихся методом анализа и синтеза.

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

24. Автоматические сборщики мусора

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

25. Старт-стопные сборщики мусора и сборщики мусора реального времени

Старт-стопные сборщики мусора останавливают поиск процесса для выполнения операции сборки мусора.

Сборщики мусора реального времени: выполняются одновременно и операция сборки мусора и пользовательский процесс.

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

26. Список в Эрланге, конструктор списка

Списки, хорошо знакомые нам по Лиспу, представляют собой цепочки вложенных пар. Конструктор списков имеет вид [<голова>|<хвост>]. Пустой список обозначается "[]". Аналоги функций car и cdr носят имена hd и tl. Как и в Лиспе предусмотрена сокращенная запись: список [a1|[a2|...[an|[]]...]] обычно записывают в виде [a1,a2,...an].

27. Образец, сопоставление с образцом

Образцом называется структурный объект, содержащий неконкретизированную переменную.

Сопоставление с образцом. В случае с совпадением с образцом выполняется конкретизация переменной..

>[a,X,b](образец)=(сопоставление)[a,d,b].

X=d

28. Выделение элементов списка в Эрланге с помощью примитивов.

hd(X)- Голова списка Х - аналог car tl(X)- Хвост списка Х - - аналог cdr

29. Выделение элементов списка в Эрланге с использованием образцов

Как и из всего остального, мы можем извлекать элементы из списка с помощью

оператора сопоставления по образцу. Если у нас имеется не пустой список L , тогда

выражение [X|Y]=L , где Х и У - это несвязанные переменные, поместит голову списка

в Х, а хвост списка - в У.

30. Порядок вычисления лямбда выражений

Порядок вычисления соответствует энергичной стратегии вычисления, принятой в лиспе:

1)Вычисляются f1 f2 fn

2)Формальные и фактические параметры связываются

3)вычисляется форма

4)возвращается значение вычисления

5)связи возвращаются в первоначальное состояние

31. Функция определения функций (связывание символов)

Для связывания символов используется три функции: SET, SETQ , SETF

1) SET: связывает символ со значением, предварительно вычисляя значения аргументов. В качестве значения функция SET возвращает значение второго аргумента.

2) SETQ: аналогична SET, но не вычисляет значение первого аргумента. Буква q на блокировку.

3) SETF: действует аналогично SETQ, но может использоваться для присвоения символу не только значения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]