A critic of Guido's blog on Python's lambda

Chris Uppal chris.uppal at metagnostic.REMOVE-THIS.org
Sun May 7 11:35:15 CEST 2006


Bill Atkins wrote:

> But why should I have to worry about any of this?  Why can't I do:
>
>   (with-indentation (pdf (+ (indentation pdf) 4))
>      (out-header)
>      (out-facts))
>
> and then within, say out-facts:
>
>   (with-indentation (pdf (+ (indentation pdf) 4))
>     (write pdf "some text"))
>
> More readable, and no bookkeeping to worry about.  This is great!  And
> here's the macro:
. [...]

Can you explain to a non-Lisper why macros are needed for this ?  I'm a
Smalltalker, and Smalltalk has no macros, nor anything like 'em, but the
equivalent of the above in Smalltalk is perfectly feasible, and does not
require a separate layer of semantics (which is how I think of true macros).

    aPdf
        withAdditionalIndent: 4
        do: [ aPdf writeHeader; writeFacts ].

and

    aPdf
        withAdditionalIndent: 4
        do: [ aPdf write: '... some text...' ].

Readers unfamiliar with Smalltalk may not find this any easier to read that
your Lisp code, but I can assure them that to any Smalltalker that code would
be both completely idiomatic and completely transparent.  (Although I think a
fair number of Smalltalkers would choose to use a slightly different way of
expressing this -- which I've avoided here only in order to keep things
simple).


> Macros rock.

I have yet to be persuaded of this ;-)

    -- chris





More information about the Python-list mailing list