Luís Oliveira wrote:
On Tue, Sep 7, 2010 at 11:15 PM, Daniel Weinreb dlw@itasoftware.com wrote:
What happens if you do
(defun foo (x) (plus x 3))
Have you tried it? CCL gets very unhappy!
Since (constantp 'x) yields nil, the compiler macro will bail out.
Yeah, you'd think.
Maybe I made a mistake.
I suppose a smarter version could perform some optimizations when only one of the arguments is constant.
On a related note, I just came across this SBCL effort https://bugs.launchpad.net/sbcl/+bug/632368 which has the potential to make compiler macros significantly more powerful by handing forms over only after they've been through the compiler's inlining and constant propagation phases!