What's wrong with using @? If I understand correctly, it's used for matrix multiplication, which is far enough from function composition to avoid confusion. And it's slightly similar visually to a circle.
On Sun, May 24, 2020 at 4:25 PM Dan Sommers < 2qdxy4rzwzuui...@potatochowder.com> wrote: > > On Sunday, May 24, 2020, at 08:07 -0400, Steven D'Aprano wrote: > > > On Sun, May 24, 2020 at 02:27:00PM +0300, Ram Rachum wrote: > > > >> Today I wrote a script and did this: > >> > >> sorted(paths, key=lambda path: len(str(path)), reverse=True) > >> > >> But it would have been nicer if I could do this: > >> > >> sorted(paths, key=len, reverse=True) > > > > It would have been even nicer if we could compose functions: > > > > sorted(paths, key=len∘str, reverse=True) > > > > *semi-wink* > > It started with y = len(str(f(g(h(x))))), which is ugly. Some people > like pipes, and wrote object-like functions that could be composed with > the "|" character slash: > > y = x | h | g | f | str | len > > (Or something like that. Maybe there was a ">" at the beginning.) Then > a clojure fan I know showed me function called "thread": > > f = thread([len, str, f, g, h]) > y = f(x) > > An untested Python implementation: > > def thread(fs): # or maybe you like def thread(*fs) instead > fs = reversed(fs) # or not, depending on how fs was constructed > def inner(x): > for f in fs: > x = f(x) > return x > return inner > > sorted(paths, key=thread([len, str]), reverse=True) > > On the one hand, it's not quite as concise as composing the functions > directly. On the other hand, ∘ ruffles a lot of ASCII feathers (but I'm > sure Steven knows that). > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > To unsubscribe send an email to python-ideas-le...@python.org > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/6WEANUFPLQY4F6IEK5MO6VYOZ6M7SJ22/ > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/DXAO6LWKTUPY2HICWZQHEOL4FWH6BVFH/ Code of Conduct: http://python.org/psf/codeofconduct/