[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: macros vs. blocks



   Date: 18 Nov 2002 14:34:05 -0000
   From: Paul Graham <pg@archub.org>
   Cc: tlb@umbrellaresearch.com

   If anyone has good examples of macros that *can't* be 
   expressed with a convenient notation for closures, it would
   be interesting to see them.  My Smalltalk-hacking friend
   Trevor Blackwell has often claimed that macros were
   unnecessary if you had blocks, so as long as we're on 
   the subject, please send him (and ll1-discuss) your 
   counterexamples.

   (The point is not mainly to quiet Trevor, of course, but
   to understand macros better.)

   Thanks!  --pg

You've gotten several good answers to this already.  But here's a nice
simple example that I use in my code every day:

  (define-syntax assert
    (syntax-rules ()
      ((assert test)
       (if (not test) (assert-error (quote test))))))

Where `assert-error' is a utility procedure that formats up a suitable
error message.  I don't see how blocks (or lightweight lambda syntax) can
help you here.