What can you do in LISP that you can't do in Python
mikel evins
himself at mikelevins.com
Thu May 24 10:14:38 EDT 2001
> > (let* ((count 0)
> > (incrementer #'(lambda () (setq count (1+ count)))))
> > (defmacro counting-setq (var val)
> > `(progn
> > (funcall ,incrementer)
> > (setq ,var ,val)
> > ,count)))
>
> > What it does is this: it defines a new version of SETQ called
> > 'counting-setq'. This new operation does the same thing that SETQ does:
it
> > sets the value of a variable. But it does something else, too: it counts
how
> > many times you call it and saves the current count in a variable that
nobody
> > but counting-setq can see or affect. When it sets a variable it
increments
> > the current count and then returns it.
That's what I get for spewing. :-)
How, in Python, do you
1) build new syntax
2) capture a lexical environment
?
More information about the Python-list
mailing list