def curry(*args, **create_time_kwds):
    """
    Bind arguments to a function.
    
    Author: Alex Martelli
    Source: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52549
    """    
    func = args[0]
    create_time_args = args[1:]
    def curried_function(*call_time_args, **call_time_kwds):
        args = create_time_args + call_time_args
        kwds = create_time_kwds.copy()
        kwds.update(call_time_kwds)
        return func(*args, **kwds)
    return curried_function

    Bind arguments to a function.
    
    Author: Alex Martelli
    Source: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52549
    
recipes/Python/161403_Functional_dictionary_list_types/recipe-161403.py