danielx wrote: (snip) > Python's lambda really can't be as powerful as Lisp's because Python > does not have expressions that do case analysis (this is not lambda's > fault, of course ;). The reason is that you really want to put each > case on its own set of lines. This enhances readability at the expense > of terseness. Since Python's statements are terminated by a newline, it > would be rather awkward to have a kind of expression where good style > calls for it to be spread out accross multiple lines. > > You can try to simulate these kinds expressions using into a list or > dictionary, but this becomes rather messy. I think the only way to get > this done properly is to use eval. For example: > > def recursiveFunction(args): > ... # do stuff... > choices = { True:"0", False:"recurisveFunction(newArgs)" } > return eval( choices[predicate] )
Why do you want to use eval here ? > The reason that you need eval is that you want to prevent any cases > from being executed until you decide which one you want. What about: def recursiveFunction(args): ... # do stuff... ... # that defines 'newArgs' and 'predicate' of course ... return (recursiveFunction, lambda x: 0)[predicate](newArgs) -- bruno desthuilliers python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])" -- http://mail.python.org/mailman/listinfo/python-list