A critic of Guido's blog on Python's lambda
Chris Uppal
chris.uppal at metagnostic.REMOVE-THIS.org
Sun May 7 05:35:15 EDT 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