After brief discussion on #lisp, I hereby suggest a macro for inclusion in
The macro in question is NOTF.
An example code (from my own project) for negating the value of a place is:
(setf (left-now-p (walk-parent shape))
(not (left-now-p (walk-parent shape))))
This code is problematic because a) it causes double evaluation of place
subforms, b) it's long and repetitive.
I would rather write:
(notf (left-now-p (walk-parent shape)))
Lisp has modify macros like INCF/DECF for numbers but does not have such a
macro for booleans. It seems like a trivial utility, but also one that might be
The place is evaluated only once.
The resulting code is shorter.
None that I can see at the moment.
;; Please forgive me - I am not used to making PRs by mail.
(export 'notf :alexandria)
(define-modify-macro notf () not
"Sets the value of PLACE to its logical negation and returns the new value.")
Michal "phoe" Herda