python-plumb: 79576a4f884f4ffd05ee7eee33909956a61fefdd
1: call = lambda f, *args, **kwargs: f(*args, **kwargs)
2:
3: def dict_join(x, y):
4: z = dict(x)
5: z.update(y)
6: return z
7:
8: def _curry(args, kwargs, n, f):
9: if len(args) >= n:
10: return reduce(call, args[n:], f(*args[:n], **kwargs))
11: else:
12: return lambda *more_args, **more_kwargs: (
13: _curry(args + more_args, dict_join(kwargs, more_kwargs), n, f))
14:
15: curry = lambda f, *args, **kwargs: _curry(
16: args,
17: kwargs,
18: # TODO: If f isn't a function, we assume its argcount is 1
19: f.func_code.co_argcount if 'func_code' in dir(f) else 1,
20: f)
Generated by git2html.