From: matz@... Date: 2018-06-21T08:36:09+00:00 Subject: [ruby-core:87558] [Ruby trunk Feature#14709][Closed] Proper pattern matching Issue #14709 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Closed We are not going to add the pattern matcher proposed in the OP (that uses %p), because it is a mere prototype. Yuki told us so clearly. If we were going to add pattern matching in Ruby, we should add it with better syntax. Regarding Qo, I like the basic idea, but similarly, we should consider new (and good looking) syntax. The problem is that I have no idea for an excellent syntax for the pattern matching right now. I close this issue and expect the proposal for a new syntax. Matz. ---------------------------------------- Feature #14709: Proper pattern matching https://bugs.ruby-lang.org/issues/14709#change-72565 * Author: zverok (Victor Shepelev) * Status: Closed * Priority: Normal * Assignee: * Target version: ---------------------------------------- On RubyKaigi 2017, there was a [presentation](http://rubykaigi.org/2017/presentations/yotii23.html) of Yuki Torii about possible implementation of pattern matching. The syntax proposed in presentation was: ```ruby res = [:ng, 500] case res when %p([:ng, status]) p status end ``` The proposed syntax seem to feel pretty consistent, and the implementation (forked Ruby interpreter) was working at this moment. As @ko1 was one of the contributors to the experiment, I don't suppose Ruby core team is not aware of the proposal, so I'd like to know what the status of it? Are there some plans for full-strength pattern matching in Ruby 3 (with proposed, or any other, syntax)? PS: There are many existing gems with some kind "almost real" pattern matching (including recently emerged [Qo](https://github.com/baweaver/qo)), yet I believe that the _only_ useful pattern matching can be provided language core. Otherwise, two main goals can't be achieved: * reasonable performance (as the pattern-matching is useful mostly in complicated algorithms, which tend to repeat matches thousands of times); * unpacking of parts of the patterns into local variables. -- https://bugs.ruby-lang.org/ Unsubscribe: