Please include NOTF
phoe at teknik.io
phoe at teknik.io
Tue Feb 13 15:35:11 UTC 2018
After brief discussion on #lisp, I hereby suggest a macro for inclusion in Alexandria.
The macro in question is NOTF.
## Reason:
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 easily overlooked.
## Upsides:
The place is evaluated only once.
The resulting code is shorter.
## Downsides
None that I can see at the moment.
## Code:
;; 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.")
----------------
BR
Michal "phoe" Herda
More information about the alexandria-devel
mailing list