[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MODIFYF



     Was the following ever considered for Common Lisp?


     After SETF, the most logical and general generalized-variable
function (macro) to have next would clearly seem to be something
I call MODIFYF.

(MODIFYF function place . args)

would be approximately equivalent to

(SETF place (function place . args))

except of course for subforms of place being evaluated only once.


     (There are a couple of issues, such as
1) unless you prefer swapping the order of args in MODIFYF,
   function being evaluated before place)
2) evaluating function and going to (funcall function place . args) instead,
   thus allowing lambdas and suchlike.)


     This is reminiscent of, among other things, the op= statements
of the C language, where op includes +, -, etc.


     Many (if not all) "modify macros" would be easily defined in terms
of it.  E.g.,

(defmacro INCF (place &optional (increment 1))
  (MODIFYF + place increment))


     When called directly in user code, MODIFYF stands in approximately
the same relation to DEFINE-MODIFY-MACRO as LAMBDA-expressions stand to
DEFUN.


Bob Sasseen
veracsd@a.isi.edu