On 10/31/05, Martin Blais <[EMAIL PROTECTED]> wrote:

> I'm always--literally every time-- looking for a more functional form,
> something that would be like this:
>
>    # apply dirname() 3 times on its results, initializing with p
>    ... = repapply(dirname, 3, p)
[...]
> Just wondering, does anybody know how to do this nicely? Is there an
> easy form that allows me to do this?

FWIW, something like this works:

>>> def fpow(f, n):
...     def res(*args, **kw):
...         nn = n
...         while nn > 0:
...             args = [f(*args, **kw)]
...             kw = {}
...             nn -= 1
...         return args[0]
...     return res
...

>>> fn = r'a\b\c\d\e\f\g'
>>> d3 = fpow(os.path.dirname, 3)
>>> d3(fn)
'a\\b\\c\\d'

You can vary this a bit - the handling of keyword arguments is an
obvious place where I've picked a very arbitrary approach - but you
get the idea. This *may* be a candidate for addition to the new
"functional" module, but I'd be surprised if it got added without
proving itself "in the wild" first. More likely, it should go in a
local "utilities" module.

Paul.
_______________________________________________
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