Feature #20580
openPipe Operator accepting lambda
Description
I think that the pipe operator was not reflecting the actual pipe operator in functional programming language.
In Elixir, Elm, F# etc. The pipe operator takes a value and applies it on the lambda at the right of the operator. Example
add_one = -> a { a + 1 }
add_two = -> a { a + 2 }
2 |> add_one |> add_two == 5
In combination with the >> operator, some interesting thing can be done.
2 |> add_one >> add_two
you can refactor to
add_tree = add_one >> add_two
2 |> add_tree
I currently use the then
method on Object to do the equivalent. However this takes more characters and you need to put the closing bracket at the end of the line.
2.then(&add_one >> add_tree)
Updated by martinosis (Martin Chabot) 7 months ago
- Subject changed from Pipe Operator accepting lamnda to Pipe Operator accepting lambda
Description
I think that the previously pipe operator suggested syntax was not reflecting the actual pipe operator in functional programming languages.
In Elixir, Elm, F# etc. The pipe operator takes a value and applies it on the lambda at the right of the operator. Example:
add_one = -> a { a + 1 }
add_two = -> a { a + 2 }
2 |> add_one |> add_two == 5
In combination with the >> operator, some interesting thing can be done.
2 |> add_one >> add_two
you can refactor to
add_tree = add_one >> add_two
2 |> add_tree
We can use the then
method on Object to do the equivalent. However this takes more characters and you need to put the closing bracket at the end of the line.
2.then(&add_one >> add_tree)
The suggested syntax would support the actual meaning of the pipe operators in functional languages.
Updated by tenderlovemaking (Aaron Patterson) 7 months ago ยท Edited
I like this, but I feel like in practice the syntax wouldn't help much.
It looks nice when you use it with local variables, but using it with methods would be a huge pain (not to mention the performance aspects) since you have to get the method and convert it to a lambda:
2 |> &obj.method(:whatever)
I call methods much more frequently than lambdas, so I'm not sure how much this syntax would improve my life.
Updated by matheusrich (Matheus Richard) 6 months ago
I call methods much more frequently than lambdas, so I'm not sure how much this syntax would improve my life.
Agreed. It would be more useful if we had a syntax for getting a method from an object (like we once had).