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 < 2QdxY4RzWzUUiLuE@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-leave@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/6WEANU... Code of Conduct: http://python.org/psf/codeofconduct/