[Python-Dev] PEP 342: simple example, closure alternative

Alain Poirier alain.poirier at net-ng.com
Fri Aug 26 18:21:58 CEST 2005


Le Vendredi 26 Août 2005 16:57, Guido van Rossum a écrit :
> On 8/25/05, Ian Bicking <ianb at colorstudy.com> wrote:
> > More generally, I've been doing some language comparisons, and I don't
> > like literal but non-idiomatic translations of programming patterns.
>> True. (But that doesn't mean I think using generators for this example
> is great either.)
>> > So I'm considering better ways to translate some of the same use cases.
>> Remember that this particuar example was invented to show the
> superiority of Lisp; it has no practical value when taken literally.
> If you substitute a method call for the "acc += incr" operation, the
> Python translation using nested functions is very natural. For larger
> examples, I'd recommend defining a class as always.

For example, I often use this class to help me in functional programming :
 _marker = ()
 class var:
 def __init__(self, v=None):
 self.v = v
 def __call__(self, v=_marker):
 if v is not _marker:
 self.v = v
 return self.v
and so the nested functions become very functional :
 def accum(n):
 acc = var(n)
 return lambda incr: acc(acc()+incr)


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /