Работа с отображающими функционалами - Lisp

Узнай цену своей работы

Формулировка задачи:

Встретилась вот такая задача. С помощью отображающих функционалов у элементов одного списка создать свойство с именем property и присвоить свойству элементов первого списка соответствующие значение из второго списка. Не могу понять даже то, что требуется. Прошу помочь разобраться.

Решение задачи: «Работа с отображающими функционалами»

textual
Листинг программы
  1. (defun task (lst1 lst2)
  2.   (mapcar (lambda (x y) (putprop x 'property y)) lst1 lst2))
  3.  
  4. ==> TASK
  5.  
  6. (task '(a b c d) '(1 2 3 4))
  7.  
  8. ==> (A B C D)
  9.  
  10. (mapcar 'proplist '(a b c d))
  11.  
  12. ==> ((PROPERTY 1) (PROPERTY 2) (PROPERTY 3) (PROPERTY 4))

Объяснение кода листинга программы

В коде определена функция task, которая принимает два аргумента lst1 и lst2. Функция использует оператор mapcar для применения анонимной функции (lambda) к элементам lst1 и lst2. Анонимная функция применяет функцию putprop к элементам lst1, передавая в качестве аргумента значение из списка lst2. В приведенном примере вызывается функция task с аргументами '(a b c d) и '(1 2 3 4). Результатом выполнения функции является список '(a b c d), то есть исходный список без изменений. При вызове функции mapcar с аргументом 'proplist и списком '(a b c d) возвращается список ((PROPERTY 1) (PROPERTY 2) (PROPERTY 3) (PROPERTY 4)), то есть для каждого элемента списка '(a b c d) создается новый список с одним элементом - значением свойства, соответствующего индексу элемента в исходном списке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут