Ack, OK somehow I didn't even think to read the definition of and before. Now I can see how my definition is basically equivalent.
I noticed it being bound in aand before but wasn't sure why. Your example of applying prn seems useful but are there any other common similar idioms? Thanks for the reply.
Well, you can write (aand (complex-expression 'that (might return) "nil") (frobnicate it)), but I can't think of any specific examples off the top of my head. There's also aif and awhen, which do similar things, and which are probably slightly more useful.
Nevermind - I can see this proposed version builds more complex expressions at evaluation time (builds an "and" expr even if only one arg). I guess we would prefer shorter expanded forms to shorter macro definitions?
You have to be careful there. The and expression of one arg you mentioned won't cost anything because (and expr) will evaluate to expr. So you need to be sure you are looking at the final expansion, which is not necessarily what macex gives you, because macex doesn't expand nested macros.
Also, the general idea "shorter is better" doesn't really apply to expanded code, since often more optimized code is longer than simpler code, and being expanded code, it doesn't usually need to be read by humans.
Now that said, your proposed aand still doesn't work, but this particular issue isn't your problem.