С помощью функционалов и(или) макросов построить новую синтаксическую форму - 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
.
— Результат выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д