С помощью функционалов и(или) макросов построить новую синтаксическую форму - Lisp
Формулировка задачи:
Решение задачи: «С помощью функционалов и(или) макросов построить новую синтаксическую форму»
(defun mklist (keys &rest exprs) (mapcar 'cons keys exprs)) ==> mklist (mklist '(a b c d e) 1 2 3 4 5 6) ==> ((a . 1) (b . 2) (c . 3) (d . 4) (e . 5))
Объяснение кода листинга программы
В коде определён функцией mklist с двумя аргументами: keys и exprs.
— Если keys — это список, то возвращается новая форма списка, созданная с помощью mapcar применением функции cons к каждому элементу keys, в качестве значения которого выступает соответствующий элемент exprs.
— Если keys — это символ, то возвращается новая форма списка, созданная с помощью mapcar применением функции cons к каждому элементу keys, в качестве значения которого выступает соответствующий элемент exprs, записанный в кавычках.
Пользователь вызывает функцию mklist с двумя аргументами: keys — список, exprs — список.
— Функция mklist возвращает новую форму списка, созданную с помощью mapcar применением функции cons к каждому элементу keys, в качестве значения которого выступает соответствующий элемент exprs.
— Результат выводится на экран.