Paul Rubin schrieb: > Steven D'Aprano <[EMAIL PROTECTED]> writes: >> Now, if you want to tell me that, despite all the talk, Lisp coders don't >> actually create new syntax or mini-languages all that often, that they >> just use macros as functions, then the question becomes: why do you need >> macros then if you are just using them as functions? Why not use functions? > > Macros let you write what amounts to functions that don't evaluate > their arguments. Think of the endless clpy wars over the ternary > conditional operator. You want to write something like > > def ternary(test, iftrue, iffalse): > if test: return iftrue > else iffalse > > but because of side effects, you don't want > > a = cond(test, f(x), g(x)) > > to evaluate both f and g. That is trivial to do with a macro but > can't be done with a function.
I think you could do that with functional programming. You can protect the evaluation by encapsulating the args in a function object? def f_Args(x): return x def g_Args(x): return x and then a = cond(test, f, g, f_Args(x), g_Args(x)) if you adopt cond. But of course it is getting ugly. So a macro can free you from this extra code. André -- -- http://mail.python.org/mailman/listinfo/python-list