Функционалы. Методы обработки S-выражений. Методы обработки списков презентация

Содержание

Применяющие функционалы. Функция Funcall FUNCALL принимает произвольное количество аргументов, применяет свой первый (функциональный) аргумент к оставшемуся списку аргументов. (funcall '* 1 2 3 4 5 6 7 8 9 10) ==>

Слайд 1Функционалы. Методы обработки S-выражений. Методы обработки списков
Лекция № 12


Слайд 2Применяющие функционалы. Функция Funcall
FUNCALL принимает произвольное количество аргументов, применяет свой первый (функциональный)

аргумент к оставшемуся списку аргументов.
(funcall '* 1 2 3 4 5 6 7 8 9 10)
==> 3628800

С помощью FUNCALL можно давать именам функций синонимы и «переопределять» стандартные функции.
(setq сложить '+)
==> +
(funcall сложить 1 2 3)
==> 6

Слайд 3Функция Funcall


Слайд 4Применяющие функционалы. Функция Apply
APPLY похожа на функцию FUNCALL, но имеет ровно два

аргумента: первый - функциональный, а второй является списком произвольной длины.
Вызов APPLY заключается в том, что вычисляется функция, заданная первым аргументом, со списком параметров, заданным вторым аргументом APPLY.

Слайд 5Отображающие функционалы. Функции MAPCAR и MAPLIST
Отображающие функционалы применяют функциональный аргумент к элементам

списка, в результате чего строится новый список. Отсюда и название: исходный список отображается на результирующий.
MAPLIST принимает два аргумента:
значение первого аргумента должно быть списком;
второй аргумент - функциональный.
Функция, задаваемая вторым аргументом, должна принимать на вход список. Результат: функция, заданная вторым аргументом, последовательно применяется к значению первого аргумента, к этому списку без первого элемента, без первых двух элементов и т.д. до исчерпания списка. Результаты вызова функции объединяются в список, который функционал вернет в качестве значения.

Слайд 6Отображающие функционалы. Функции MAPCAR и MAPLIST
MAPCAR применяет функциональный аргумент не к остаткам

списка, а последовательно к каждому элементу.
Результаты этих применений объединяются в список, который и возвращает функционал MAPCAR.

Слайд 7Методы обработки S-выражений. Функция AMONG
(DEFUN among (x y)
(COND

((ATOM y) (EQ x y))
((among x (CAR y)) (QUOTE T))
((QUOTE T) (among x (CDR y) ))
) )



Проверка, входит ли заданный атом в данное S-выражение


Слайд 8Методы обработки S-выражений. Функция EQUAL
(DEFUN equal (x y)
(COND

((ATOM x) (COND
((ATOM y) (EQ x y))
((QUOTE T) (QUOTE NIL))
) )
((equal (CAR x)(CAR y)) (equal (CDR x)(CDR y)) )
  ((QUOTE T) (QUOTE NIL) )
) )

Предикат, проверяющий равенство двух S-выражений


Слайд 9Методы обработки S-выражений. Функция SUBST
(DEFUN subst (x y z)
(COND


((equal y z) x)
((ATOM z) z)
((QUOTE T)(CONS
(subst x y (CAR z))
(subst x y (CDR z))
)
)
) )

Функция трех аргументов x, y, z, строящая результат замены S-выражением x всех вхождений y в S-выражение z


Слайд 10Методы обработки S-выражений. Функция NULL
(DEFUN null (x)
(COND

((EQ x (QUOTE NIL)) (QUOTE T))
((QUOTE T) (QUOTE NIL))
) )

Предикат, отличающий пустой список от остальных S-выражений


Слайд 11Методы обработки S-выражений. Функция PAIR_TO_LIST
(DEFUN pair_to_list (x)
(CONS (CAR

x)
(CONS (CDR x) NIL)) )
 

Размещение компонентов точечной пары в двухэлементном списке


Слайд 12Методы обработки S-выражений. Функция LIST_TO_PAIR
(DEFUN list_to_pair (x)
(CONS (CAR

x) (CADR x)) )

Построение из первых двух элементов списка точечной пары


Слайд 13Методы обработки списков. Функция APPEND
(DEFUN append (x y)
(COND

((null x) y)
((QUOTE T)
(CONS (CAR x)
(append (CАR x) y)
)
)
) )

Функция двух аргументов x и y, сцепляющая два списка в один


Слайд 14Методы обработки списков. Функция MEMBER
(DEFUN member (x y)
(COND

((null y) (QUOTE NIL) )
((equal x (CAR y)) (QUOTE T) )
((QUOTE T) (member x (CDR y))
) )

Функция двух аргументов x и y, выясняющая, встречается ли S-выражение x среди элементов списка y


Слайд 15Методы обработки списков. Функция PAIRLIS
(DEFUN pairlis (x y al)
(COND

((null x) al)
((QUOTE T) (CONS
(CONS (CAR x) (CAR a1) )
(pairlis (CDR x) (CDR y) al)
) )
) )

Функция аргументов x, y, al строит список пар соответствующих элементов из списков x и y и присоединяет их к списку al


Слайд 16Методы обработки списков. Функция ASSOC
(DEFUN assoc (x al)
(COND

((eq x (CAAR al)) (CAR al) )
((QUOTE T) (assoc x (CDR al)) )
) )

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


Слайд 17Методы обработки списков. Функция INSERT
(DEFUN insert (al x z)
(COND


((null al) NIL)
((equal (CAR al) x) (CONS z al) )
((QUOTE T) (CONS (CAR al)
(append (CDR al) x z) ))
) )

Вставка z перед вхождением ключа x в список al


Слайд 18Методы обработки списков. Функция ASSIGN
(DEFUN assign (x v al)

(COND
((Null al) (CONS(CONS x v) NIL ) )
((equal x (CAAR al)) (CONS(CONS x v)
(CDR al)) )
((QUOTE T) (CONS (CAR al)
(assign x v (CDR al)) ))
)
)

Модель присваивания переменным, хранящим значения в ассоциативном списке


Слайд 19Методы обработки списков. Функция REVERSE
(DEFUN reverse (m)
(COND ((null

m) NIL)
(T (append (reverse (CDR m))
(list(CAR m)) )
) ) )

Обращение списка


Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое ThePresentation.ru?

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


Для правообладателей

Яндекс.Метрика