[plt-scheme] Are macros a programming language?

From: Grant Rettke (grettke at acm.org)
Date: Sun Oct 21 10:57:44 EDT 2007

On 10/21/07, Carl Eastlund <cce at ccs.neu.edu> wrote:
> Why aren't they Scheme?

My thought was that it generates Scheme, but it is not Scheme.

For example I wanted to iterate over a list of arguments. I couldn't
(which only means I don't know how not that it is impossible) just
iterate over the n-ary arguments and emit the desired code.

I ended up recursively matching patterns to perform iteration (though
Chongkai Zhu showed me a nicer way); the iteration didn't look like
Scheme:

((_ name)
     (begin
       (if (not (identifier? (syntax name)))
           (raise-syntax-error
            #f
            "property names must be identifiers, not expressions"
            (syntax name)))
       (syntax
        (begin
          (define property-name null)
          (define/public name
            (case-lambda
              [() property-name]
              [(value) (set! property-name value)]))))))
    ((_ name names ...)
     (syntax
      (begin
        (property name)
        (property names ...))))))


Posted on the users mailing list.