> I don't think "trivial" is the right word to use here,
> since it implies something that's of so little importance
> that it can be ignored. But the simple cases are precisely
> the ones where this wart hurts the most, so we can't
> ignore them.

I'd like to inject an example that might help make this discussion more
concrete.

Consider the following function:

        def for_each(seq, f):
                for i in seq:
                        f(i)

I'm sure I've seen more than one instance of someone on comp.lang.python
trying to do the equivalent of using a function such as this one to compute
the sum of the elements of a sequence as follows:

        def sum(seq):
                result = 0
                def accum(i):
                        result += i
                for_each(seq, accum)
                return result

and wonder why it doesn't work.  Still odder, why it doesn't work and the
following does:

        def sum(seq):
                result = [0]
                def accum(i):
                        result[0] += i
                for_each(seq, accum)
                return result[0]

Transforming the first definition of sum above into the second may be
trivial, but only if you've encountered the technique before.  Moreover, the
first version of sum uses a technique that is more than 45 years old (!), as
it was available to Algol 60 programmers.


_______________________________________________
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

Reply via email to