From: duerst Date: 2022-03-24T04:44:25+00:00 Subject: [ruby-core:108049] [Ruby master Feature#18179] Add Math methods to Numeric Issue #18179 has been updated by duerst (Martin D��rst). mrkn (Kenta Murata) wrote in #note-2: > I'm negative to this proposal. I don't think `Math.sqrt` is the behavior or the property of a Numeric object. It is the positive square root function that maps from/to the set of non-negative real numbers. This is how Mathematicians think, and we don't want to take this possibility away from them. But Ruby is mainly for Ruby programmers. And most Ruby programmers may not think like Mathematicians. Ruby programmers should be able to use Ruby the Ruby way, even for such functionality. For example, if I have an array `a`, and want to create an array of square roots from it, currently I have to write: ``` a.map { |n| Math.sqrt n } ``` With this proposal, it would be possible to write: ``` a.map(&:sqrt) ``` This expresses the intent (map the squareroot function) in a much more concise and functional way. > If we introduce `Numeric#sqrt`, we should expand its domain to negative numbers and Complex numbers. Also, it is better to consider other kinds of numbers, such as Quaternion. Now that Complex is built-in, producing an error on `Math.sqrt(-2)` indeed doesn't look good. That's independent of this proposal, but it could be implemented together. ---------------------------------------- Feature #18179: Add Math methods to Numeric https://bugs.ruby-lang.org/issues/18179#change-97011 * Author: ankane (Andrew Kane) * Status: Open * Priority: Normal ---------------------------------------- Hi, I wanted to get thoughts on adding class methods from `Math` as instance methods on `Numeric`. ```ruby x.sqrt # vs Math.sqrt(x) x.log # vs Math.log(x) ``` Rust takes this approach and it (subjectively) feels more intuitive/object-oriented. It also seems more consistent with methods like `x.abs`. -- https://bugs.ruby-lang.org/ Unsubscribe: