Escrevendo uma macro destrutiva ou função como incf?
Eu preciso de umincf
função que faz alguns limites de verificação durante o incremento:
val := val + delta
if val >= 1.0
then return 1.0
else return val
Eu posso escrever isso usandoincf
:
(defun incf-bounded(val delta)
(incf val delta)
(if (>= val 1.0) 1.0 val))
Nesse caso, eu preciso usar isso como(setf x (incf-bounded x delta))
. Mas como eu escrevo um que eu possa usar como(incf-bounded x delta)
, ou seja, ondex
será modificado?