Написание деструктивного макроса или функции вроде incf?
Мне нуженincf
функция, которая выполняет проверку некоторых границ во время приращения:
val := val + delta
if val >= 1.0
then return 1.0
else return val
Я могу написать это используя:incf
(defun incf-bounded(val delta)
(incf val delta)
(if (>= val 1.0) 1.0 val))
В таком случае мне нужно использовать это как(setf x (incf-bounded x delta))
, Но как мне написать тот, который я могу использовать как(incf-bounded x delta)
то есть гдеx
будет изменен?