Здравствуйте! Записался на ваш курс, но не понимаю как произвести оплату. Надо ли писать заявление и, если да, то куда отправлять? как я получу диплом о профессиональной переподготовке? |
Отображения и функционалы
Встроенные функционалы (Clisp)
Отображающий функционал можно написать самим, а можно и воспользоваться одним из встроенных. Согласно стандарту, в реализацию языка Clisp обычно включены функционалы: MAP, MAPCAR, MAPLIST, MAPCAN, MAPCON, MAPC, MAPL [6, 7]. Каждый из них покомпонентно обработает любой набор списков. Отличаются они схемами выбора аргументов для отображающей функции, характером воздействия на исходные данные и оформлением результатов, передаваемых объемлющим формулам.
Map
( map result-type function sequences ... )
Функция FUNCTION вызывается на всех первых элементах последовательностей, затем на всех вторых и т.д. Из полученных результатов FUNCTION формируется результирующая последовательность, строение которой задается параметром RESULT-TYPE с допустимыми значениями CONS, LIST, ARRAY, STRING, NIL.
Mapcar
( mapcar funct list ... )
Функция FUNCTION применяется к первым элементам списков, затем ко вторым и т.д. Другими словами, FUNCTION применяется к ";головам" методично сокращающихся списков, и результаты применения собираются в результирующий список.
(mapcar #'+ '(1 2 3) '(4 5 6)) ; = (5 7 9) (mapcar #'list '(1 2 3)'(4 5 6)) ; = ((1 4)(2 5)(3 6)) (DEFUN evlis (args) (mapcar #'EVAL args)) ; вычисление аргументов4.14.
(Без учета ассоциативного списка)
(DEFUN evlis (args AL) (mapcar #'(LAMBDA (x) (EVAL x AL)) args))
Maplist
( maplist function list ... )
Функционал аналогичен MAPCAR, но FUNCTION применяется к "хвостам" списков LIST, начиная с полного списка.
(maplist #'list '(1 2 3)'(4 5 6)) ; = (((1 2 3) (4 5 6)) ((2 3) (5 6)) ((3) (6)))4.15.
Mapc и Mapl
Оба функционала работают как MAPCAR и MAPLIST, соответственно, за исключением того, что они в качестве формального результата выдают первый список (своеобразная аналогия с формальными аргументами).
(mapc #'list '(1 2 3)'(4 5 6)) ; = (1 2 3) (mapl #'list '(1 2 3)'(4 5 6)) ; = (1 2 3)4.16.
Mapcan и Mapcon
И эти два функционала аналогичны MAPCAR и MAPLIST, но формирование результатов происходит не с помощью операции CONS, которая строит данные в новых блоках памяти, а с помощью деструктивной функции NCONC, которая при построении новых данных использует память исходных данных, из-за чего исходные данные могут быть искажены.
В общем случае, отображающие функционалы представляют собой различные виды структурной итерации или итерации по структуре данных. При решении сложных задач полезно использовать отображения и их композиции, а также иметь в виду возможность создания своих функционалов.
MAP-INTO отображает результат в конкретную последовательность.
Подведение итогов
Показанные построения достаточно разнообразны, чтобы можно было сформулировать, в чем преимущества применения техники функционального программирования:
- отображающие функционалы позволяют строить программы из крупных действий ;
- функционалы обеспечивают гибкость отображений ;
- определение функции может совсем не зависеть от конкретных имен ;
- с помощью функционалов можно управлять выбором формы результатов ;
- параметром функционала может быть любая функция, преобразующая элементы структуры;
- функционалы позволяют формировать серии функций от общих данных ;
- встроенные в Clisp функционалы приспособлены к покомпонентной обработке произвольного числа параметров ;
- любую систему взаимосвязанных функций можно преобразовать к одной функции, используя вызовы безымянных функций.