[#119132] Segfault using ruby C on MacOS (Intel Catalina and M2 Sonoma) — "martin.kufner--- via ruby-core" <ruby-core@...>
Hey guys,
4 messages
2024/09/12
[#119133] Re: Segfault using ruby C on MacOS (Intel Catalina and M2 Sonoma)
— "martin.kufner--- via ruby-core" <ruby-core@...>
2024/09/12
I just saw, that the #includes dont show up in the c file ...
[#119145] [Ruby master Misc#20728] Propose Eileen Uchitelle as a core committer — "kddnewton (Kevin Newton) via ruby-core" <ruby-core@...>
Issue #20728 has been reported by kddnewton (Kevin Newton).
14 messages
2024/09/12
[#119312] [Ruby master Bug#20762] `make test-basic` with -DRGENGC_FORCE_MAJOR_GC is always failure — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>
Issue #20762 has been reported by hsbt (Hiroshi SHIBATA).
6 messages
2024/09/27
[ruby-core:119340] [Ruby master Feature#20770] A *new* pipe operator proposal
From:
"AlexandreMagro (Alexandre Magro) via ruby-core" <ruby-core@...>
Date:
2024-09-30 02:24:22 UTC
List:
ruby-core #119340
Issue #20770 has been updated by AlexandreMagro (Alexandre Magro).
nobu (Nobuyoshi Nakada) wrote in #note-1:
> In the previous trial syntax, the receiver of RHS was the result of LHS.
>
> In your proposal, the receiver of RHS is the same as LHS, and the LHS result is passed as an implicit argument?
Exactly, this is the expected behavior of the pipe operator in other functional languages, such as Elixir. In those languages, the left-hand side (LHS) value is passed directly as an argument to the function on the right-hand side (RHS), either as the first or last argument depending on the language. For example, in Elixir, you might write:
```elixir
value = value |> add(3) |> square() |> half()
```
My proposal for Ruby offers a more flexible approach. The LHS value can be passed as an explicit argument (using `_1` or `it`), allowing for greater control over how the RHS function handles the received value.
Additionally, this approach simplifies the implementation by treating RHS as executable block, just as we already do with `.then`.
----------------------------------------
Feature #20770: A *new* pipe operator proposal
https://bugs.ruby-lang.org/issues/20770#change-109951
* Author: AlexandreMagro (Alexandre Magro)
* Status: Open
----------------------------------------
Hello,
This is my first contribution here. I have seen previous discussions around introducing a pipe operator, but it seems the community didn't reach a consensus. I would like to revisit this idea with a simpler approach, more of a syntactic sugar that aligns with how other languages implement the pipe operator, but without making significant changes to Ruby's syntax.
Currently, we often write code like this:
```ruby
value = half(square(add(value, 3)))
```
We can achieve the same result using the `then` method:
```ruby
value = value.then { add(_1, 3) }.then { square(_1) }.then { half(_1) }
```
While `then` helps with readability, we can simplify it further using the proposed pipe operator:
```ruby
value = add(value, 3) |> square(_1) |> half(_1)
```
Moreover, with the upcoming `it` feature in Ruby 3.4 (#18980), the code could look even cleaner:
```ruby
value = add(value, 3) |> square(it) |> half(it)
```
This proposal uses the anonymous block argument `(_1)`, and with `it`, it simplifies the code without introducing complex syntax changes. It would allow us to achieve the same results as in other languages that support pipe operators, but in a way that feels natural to Ruby, using existing constructs like `then` underneath.
I believe this operator would enhance code readability and maintainability, especially in cases where multiple operations are chained together.
Thank you for considering this proposal!
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- ruby-core@ml.ruby-lang.org
To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/