Ассоциативные списки и списки свойств - 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.