Replace all Partial Functions with Curryable Functions for easy of use.
- Use curry decorator on all utility functions
def curry(x, argc=None):
if argc is None:
argc = x.func_code.co_argcount
def p(*a):
if len(a) == argc:
return x(*a)
def q(*b):
return x(*(a + b))
return curry(q, argc - len(a))
return p
- Make sure all existing tests pass
- Add tests using the curried vs partial applied versions of all functions.