В следующем коде:
(PROGN
(defmacro s-v (U)
`(symbol-value ,U))
(defmacro =! (&rest Args)
`(if (= (length ',Args) 2)
(setf (s-v (elt ',Args 0)) (eval (elt ',Args 1)))
(setf (elt (s-v (elt ',Args 0)) (eval (elt ',Args 1))) (eval (elt ',Args 2)))))
(defmacro obm (U1 U2)
`(let ((UTemp ,U1))
(=! ,U1 ,U2)
(=! ,U2 UTemp)))
(=! a 3)
(=! b 4)
(obm a b)
) ; PROGN
Возникает ошибка "EVAL: переменной UTEMP не присвоено значение". Как ее исправить? Можно заменить в 3-ем макросе =! на setf, но меня этот вариант не устраивает.
Программировать сложно. Но не программировать еще сложнее.