[LISP] Ошибка в макросе
От: DSblizzard Россия  
Дата: 29.04.08 22:54
Оценка:
В следующем коде:

(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, но меня этот вариант не устраивает.
Программировать сложно. Но не программировать еще сложнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.