Ассоциативные списки и списки свойств - Lisp (229472)
Формулировка задачи:
Не могу разобраться в теме "Ассоциативные списки и списки свойств",а именно как работать с ключами)если кому не сложно,объясните наглядно)
Решение задачи: «Ассоциативные списки и списки свойств»
textual
Листинг программы
(spropl 'a '((x . 1) (y . 2) (z . 3))) ;; Список свойств a содержит три пары ==> ((x . 1) (y . 2) (z . 3)) (spropl 'b '((xx . 11) (yy . 22) (zz . 33))) ;; Список свойств b содержит три пары ==> ((xx . 11) (yy . 22) (zz . 33)) (spropl 'c '((q . 1) (w . 2))) ;; Список свойств a содержит две пары ==> ((q . 1) (w . 2)) (defun task (lst) (mapcar (lambda (x) (length (proplist x))) lst)) ==> task (task '(a b c)) ==> (3 3 2)
Объяснение кода листинга программы
- Первый элемент списка - функция
spropl
, которая принимает два аргумента: имя свойства и список пар свойств. - Функция
spropl
возвращает список пар свойств. - Второй элемент списка - функция
task
, которая принимает один аргумент - список свойств. - Функция
task
применяет к каждому элементу списка функциюlength
и возвращает список результатов. - Третий элемент списка - вызов функции
task
с аргументом(a b c)
, гдеa
,b
иc
- это списки свойств. - Результат вызова функции
task
-(3 3 2)
, где первое число - длина списка свойств дляa
, второе число - длина списка свойств дляb
, третье число - длина списка свойств дляc
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д