<div dir="ltr"><div><div><div><div><div><div>Dear Steve,<br><br></div>Thank you for the feedback and for the links!<br><br></div>I think that both (f@g).__name__ and str(f@g) should be <br></div>f.__name__ + ' @ ' + g.__name__<br></div>and <br></div>str(f) + ' @ ' +str(g)<br><br></div>Concerning the performance, I think that it could be poor, and I don't know yet how to improve this.<br><div><div><div><div><div><div><div><br>> > Dear all,<br>> ><br>> > The matrix multiplication operator @ is going to be introduced in Python<br>> > 3.5 and I am thinking about the following idea:<br>> ><br>> > The semantics of matrix multiplication is the composition of the<br>> > corresponding linear transformations.<br>> > A linear transformation is a particular example of a more general concept -<br>> > functions.<br>> > The latter are frequently composed with ("wrap") each other. For example:<br>> ><br>> > plot(real(sqrt(data)))<br>> ><br>> > However, it is not very readable in case of many wrapping layers.<br>> > Therefore, it could be useful to employ<br>> > the matrix multiplication operator @ for indication of function<br>> > composition. This could be done by such (simplified) decorator:<br>><br>> I like the idea of @ as a function compose operator.<br>><br>> There have been many requests and attempts at support for function<br>> composition:<br>><br>> <a href="http://code.activestate.com/recipes/574458-composable-functions/">http://code.activestate.com/recipes/574458-composable-functions/</a><br>><br>> <a href="http://code.activestate.com/recipes/52902-function-composition/">http://code.activestate.com/recipes/52902-function-composition/</a><br>><br>> <a href="http://code.activestate.com/recipes/528929-dynamic-function-composition-decorator/">http://code.activestate.com/recipes/528929-dynamic-function-composition-decorator/</a><br>><br>> <a href="http://blog.o1iver.net/2011/08/09/python-function-composition.html">http://blog.o1iver.net/2011/08/09/python-function-composition.html</a><br>><br>> <a href="https://mail.python.org/pipermail/python-dev/2009-August/091161.html">https://mail.python.org/pipermail/python-dev/2009-August/091161.html</a><br>><br>> <a href="http://stackoverflow.com/questions/2281693/is-it-a-good-idea-to-have-a-syntax-sugar-to-function-composition-in-python">http://stackoverflow.com/questions/2281693/is-it-a-good-idea-to-have-a-syntax-sugar-to-function-composition-in-python</a><br>><br>><br>> The last one is notable, as it floundered in part on the lack of a good<br>> operator. I think @ makes a good operator for function composition.<br>><br>><br>> I think that there are some questions that would need to be answered.<br>> For instance, given some composition:<br>><br>>     f = math.sin @ (lambda x: x**2)<br>><br>> what would f.__name__ return? What about str(f)?<br>><br>><br>> Do the composed functions:<br>><br>>     (spam @ eggs @ cheese)(x)<br>><br>> perform acceptibly compared to the traditional syntax?<br>><br>>     spam(eggs(cheese(x))<br>><br>><br>><br>> --<br>> Steve<br><br></div></div></div></div></div></div></div></div>