Are macros still an enormous edge in the power of a language?
pg: Yes.  It's part of good Lisp style not to use a macro when a function would suffice, and yet the source of HN is full of macro calls.  If you want to see examples of modern uses of macros, that would be a good place to start.http://ycombinator.com/arc/arc3.tarIf you want a single, self-contained example, here's one:    (mac zap (op place . args)
      (with (gop    (uniq)
             gargs  (map [uniq] args)
             mix    (afn seqs
                      (if (some no seqs)
                          nil
                          (+ (map car seqs)
                             (apply self (map cdr seqs))))))
        (let (binds val setter) (setforms place)
          `(atwiths ,(+ binds (list gop op) (mix gargs args))
             (,setter (,gop ,val ,@gargs))))))

How do you implement that in a language without macros?