Добавление символу свойств другого символа - Lisp

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

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

Необходимо реализовать функцию (Add(символ1, символ2)), которая бы добавляла символу2 недостающие свойства символа1.

Решение задачи: «Добавление символу свойств другого символа»

textual
Листинг программы
(setf (get 'a 'f) 1) 
 
(setf (get 'a 'g) 2)
 
(setf (get 'b 'i) 111)
 
(setf (get 'b 'f) 222)
 
(defun mk-pair (lst)
  (cond ((null lst) nil)
        (t (cons (list (car lst) (cadr lst)) (mk-pair (cddr lst))))))
 
(defun add-props (s1 s2)
  (let ((p-s2 (mk-pair (symbol-plist s2))))
    (mapcar (lambda (x) (unless (get s1 (car x)) (setf (get s1 (car x)) (cadr x)))) p-s2)))
 
(add-props 'a 'b)
 
(symbol-plist 'a)
 
==> (I 111 G 2 F 1)

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


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

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

13   голосов , оценка 3.923 из 5
Похожие ответы