From: "martinosis (Martin Chabot) via ruby-core" Date: 2024-06-13T17:02:22+00:00 Subject: [ruby-core:118317] [Ruby master Feature#20580] Pipe Operator accepting lambda Issue #20580 has been updated by martinosis (Martin Chabot). 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. ---------------------------------------- Feature #20580: Pipe Operator accepting lambda https://bugs.ruby-lang.org/issues/20580#change-108823 * Author: martinosis (Martin Chabot) * Status: Open ---------------------------------------- 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) ``` -- https://bugs.ruby-lang.org/