def __call(self, a, kw): sub_a, rest = self.__substitute__(self.__args, List.wrap(a)) sub_kw = merge(self.__kwargs, kw) return self.__func(*sub_a, **sub_kw), rest