> A closure based accumulator (using Scheme): > > (define (accum n) > (lambda (incr) > (set! n (+ n incr)) > n)) > (define s (accum 0)) > (s 1) ; -> 1 == 0+1 > (s 5) ; -> 6 == 1+5 > > So I thought the generator version might look like: > > def accum(n): > while 1: > incr = (yield n) or 0 > n += incr
Maybe I'm missing something but this example seems needlessly tricky to me. How about doing it this way? def accum(n): acc = [n] def f(incr): acc[0] += incr return acc[0] return f Here, the [0] turns "read-only" access into write access to a list element. The list itself isn't written; only its element is. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com