Skip to content

Instantly share code, notes, and snippets.

@kurohuku
Created September 8, 2010 03:44
Show Gist options
  • Save kurohuku/569580 to your computer and use it in GitHub Desktop.
Save kurohuku/569580 to your computer and use it in GitHub Desktop.
(defmacro update/fn-1! (generaized-variable update-fn &rest args)
(let ((old-val (gensym)))
`(let ((,old-val ,generaized-variable))
(setf ,generaized-variable (funcall ,update-fn ,old-val ,@args))
,old-val)))
(defmacro update/fn-2! (generaized-variable update-fn &rest args)
`(setf ,generaized-variable (funcall ,update-fn ,generaized-variable ,@args)))
(defmacro update/fn-r-1 (generaized-variable update-fn &rest args)
(let ((old-val (gensym)))
`(let ((,old-val ,generaized-variable))
(setf ,generaized-variable (funcall ,update-fn ,@args ,old-val))
,old-val))
(defmacro update/fn-r-2! (generaized-variable update-fn &rest args)
`(setf ,generaized-variable (funcall ,update-fn ,@args ,generaized-variable )))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment