And a (not very robust) version which works with keyword arguments too:

def threaded(f):
    from functools import wraps
    def wrapper(*args, **kwds):
        n = max(map(len, args) + map(len, kwds.values()) + [0])
        if n == 0:
            return []
        new_args = zip(*args) if len(args)>0 else [()]*n
        items = kwds.items()
        new_kwds = [ dict((key, value[i]) for key,value in items) for
i in range(n)]
        return [f(*new_args[i], **new_kwds[i]) for i in range(n)]
    return wrapper

sage: f = a*x^2+b
sage: tf = threaded(f)
sage: tf(a=v, x=w, b=z)
[43, 80, 117]
sage: tf(a=w, x=z, b=v)
[145, 182, 219]

--Mike

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to