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

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

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

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

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

textual
Листинг программы
(defun task (lst1 lst2)
  (mapcar (lambda (x y) (putprop x 'property y)) lst1 lst2)) 
 
==> TASK
 
(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))

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

В коде определена функция 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