[#118346] [Ruby master Bug#20586] Some filesystem calls in dir.c are missing error handling and can return incorrect results if interrupted — "ivoanjo (Ivo Anjo) via ruby-core" <ruby-core@...>
Issue #20586 has been reported by ivoanjo (Ivo Anjo).
13 messages
2024/06/19
[ruby-core:118317] [Ruby master Feature#20580] Pipe Operator accepting lambda
From:
"martinosis (Martin Chabot) via ruby-core" <ruby-core@...>
Date:
2024-06-13 17:02:22 UTC
List:
ruby-core #118317
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/