[#87847] undefined symbol: mjit_init_p — Leam Hall <leamhall@...>

I pulled Ruby trunk on 3 Jul and am now getting errors similar to the

10 messages 2018/07/07

[#88088] [Ruby trunk Misc#14937] [PATCH] thread_pthread: lazy-spawn timer-thread only on contention — normalperson@...

Issue #14937 has been reported by normalperson (Eric Wong).

9 messages 2018/07/24

[ruby-core:87984] [Ruby trunk Feature#14913][Closed] Extend case to match several values at once

From: matz@...
Date: 2018-07-18 07:33:10 UTC
List: ruby-core #87984
Issue #14913 has been updated by matz (Yukihiro Matsumoto).

Status changed from Open to Closed

We will discuss the pattern matching in #14912.

Matz.


----------------------------------------
Feature #14913: Extend case to match several values at once
https://bugs.ruby-lang.org/issues/14913#change-72995

* Author: zverok (Victor Shepelev)
* Status: Closed
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
This proposal is part of the search for how pattern matching or its elements could be gently introduced to Ruby.
[This blog post](https://zverok.github.io/blog/2018-06-26-pattern-matching.html) (authored by me) provides context and "full" (more powerful than the current proposal, but more questionable also) idea, but I believe that this, more moderate, extension, could be a reasonable start.

**Proposal:**

Allow matching several values at once, when matching by case.
Example:

```ruby
case (x, y)
when (0..10, 0..10)
 ...
when (Array, nil) # coordinates were passed as an array in first argument
 ...
when (Numeric, nil), (nil, Numeric) # somehow one of coordinates were missing
 ...
```

**Justification:**
* The syntax change is minimal (no new keywords/special chars), yet visible (very little possibility of hidden incompatibilities)
* It is alike deconstruction when passing arguments to methods or blocks
* It allows _gradual_ adding of more features in the future versions of Ruby once the new syntax will become familiar:

```ruby
case (x, *y) # flatten y
when (*Numeric) # match only an array of numerics
 ...
when (_, Array) # skip any
 ...
when (Numeric, Numeric => y, Hash => options) # match & assign, like in rescue
 ...
```

**Links:**

* [Blog post](https://zverok.github.io/blog/2018-06-26-pattern-matching.html) with reasons, links to previous discussions and more examples
* [Experimental gem](https://github.com/zverok/pattern-matching-prototype) to try as much of new proposals as possible to imitate in the current Ruby version.

PS:

Alternative syntax (reusing "block arguments" sign):

```ruby
case |x, y|
when |0..10, 0..10|
 ...
when |Array, nil|
 ...
when |Numeric, nil|, |nil, Numeric| # OK, that's probably weird
 ...
```




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next