code: def uncurry(f):
      
      ensure_callable(f)
  
      result = lambda args=(), kwargs=None: f(*args, **(kwargs or {}))
      functools.update_wrapper(result, f, ('__name__', '__module__'))
      return result
docs: Convert a curried function into a function on tuples
      (of positional arguments) and dictionaries (of keyword arguments).