<div dir="ltr"><div class="gmail_quote">On Wed, 6 May 2015 at 08:49 Guido van Rossum <<a href="mailto:guido@python.org" target="_blank">guido@python.org</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">I realize this is still python-ideas, but does this really leave functions with multiple arguments completely out of the picture (except as the first stage in the pipeline)?</div></blockquote><div><br></div></div><div dir="ltr"><div class="gmail_quote"><div>To provide some alternative ideas, what I did in sigtools.wrappers.Combination[1] was to replace the first argument with the return value of the previous call while always using the same remaining (positional and keyword) arguments. In code:</div><br>    def __call__(self, arg, *args, **kwargs):</div><div class="gmail_quote">        for function in self.functions:</div><div class="gmail_quote">            arg = function(arg, *args, **kwargs)</div><div class="gmail_quote">        return arg</div><div class="gmail_quote"><br></div><div class="gmail_quote">With this you can even use functions that use different parameters, at the cost of less strictness:</div><div class="gmail_quote"><br></div><div class="gmail_quote">    def func1(arg, *, kw1, **kwargs):</div><div class="gmail_quote">        ...</div><div class="gmail_quote"><br></div><div class="gmail_quote">    def func2(arg, *, kw2, **kwargs):</div><div class="gmail_quote">        ...</div><div class="gmail_quote"><br></div><div class="gmail_quote">That class is more of a demo for sigtools.signatures.merge[2] rather than something spawned out of a need however.</div><div class="gmail_quote"><br></div><div class="gmail_quote">[1] <a href="http://sigtools.readthedocs.org/en/latest/#sigtools.wrappers.Combination">http://sigtools.readthedocs.org/en/latest/#sigtools.wrappers.Combination</a></div><div class="gmail_quote">[2] <a href="http://sigtools.readthedocs.org/en/latest/#sigtools.signatures.merge">http://sigtools.readthedocs.org/en/latest/#sigtools.signatures.merge</a></div></div></div>