Subject: bug#15296: 24.3.50; A macro object does not necessarily have `lambda' as its cadr

From: Drew Adams <[email-masked]>
Date: Sat, 7 Sep 2013 07:23:39 -0700 (PDT)

> > AFAICT, (elisp) `Defining Macros' is the closest thing we have to doc
> > telling you how to test whether a Lisp object is a macro.  There is no
> > `macro-p' predicate or similar in Emacs Lisp, unless I'm missing
> > something.  (Shouldn't there be?)
> 
> There is `macrop' in subr.el (since some months ago, I think).

Wow, that's weird.  And thank you.  That was the first thing I looked for
(the second was `macro-p'), and for some reason I didn't find it (and I'm
using only a recent Emacs 24 build for this testing).

But you are right.  I must have somehow checked for that in a different
Emacs version.  Anyway, that solves my problem wrt testing the type.

> > Anyway, this Elisp manual node says that a macro is a list whose car
> > is `macro' and whose `cdr' is a lambda expression.  That's not true if
> > the `defmacro' was byte-compiled.
> 
> Confusing, indeed.

Not confusing, actually.  It's quite clear.  And wrong, unfortunately.
So AFAICT this should remain open for now, as a doc bug.