Today's inane new elisp macro of mine:
(defmacro ++ (x)
"increment the value of symbol X, returning the new value"
`(setq
)
So this:
(++ lines)
is a handy shorthand that expands to this:
(setq lines (1+ lines))
; returns new value of the variable
your macro (Score:1)
I consulted the manual and came up with this which doesn't work because the original x isn't getting updated anymore.
(defmacro ++ (x)
"Increment the value of symbol X, returning the new value"
(let ((xt (make-symbol "quoted-x")))
`(let ((,xt (quote
(set
This fixes three bugs. x is ev
Re:your macro (Score:2)
Oh, I didn't think of that! I was only thinking of passing in a symbol constant. But now I see what you mean. [emacswiki.org]
As to the general hardness of Lisp macros: I'm glad it's not just me that thinks that.
Maybe there's just some kind of magic syntax-highlighty thing in (e)lisp mode that will turn on all the happy macro easiness or something.
Emacs is a pathless land.
Re:your macro (Score:1)
As for making macros easier, I'm sure the Scheme folks have stuff on this. I'm a novice at this but I could guess that you might write something to check that each value is only used once. Something to do with data flows maybe.
incf? (Score:1)
See also the
incfmacro fromcl.el:It's definitely too hard to write such things from scratch in Lisp.
cl.elalso hascallfanddefine-modify-macromacros which help somewhat.