Clojure has a "->" macro which inserts each expression recursively as the first argument of the next expression.
This means that I could write:
(-> arg f1 f2 f3)
and it behaves like (shell piping):
f3(f2(f1(arg)))
I would like to do this in Python; however, searching seems to be a nightmare! I couldn't search for "->", and neither could I search for Python function threading!
Is there a way to overload, say, the | operator so that I could write this in Python?
arg | f1 | f2 | f3
Thanks!
You can easily implement something like this yourself.
def compose(current_value, *args):
for func in args:
current_value = func(current_value)
return current_value
def double(n):
return 2*n
print compose(5, double, double) # prints 20