From: david.n.arnold@... Date: 2017-08-26T02:26:11+00:00 Subject: [ruby-core:82478] [Ruby trunk Feature#13801] Implement case equality test for Set#=== Issue #13801 has been updated by davidarnold (David Arnold). > I expect Set to act almost like Array [...] But why? Aside from both being collections, there is no connection. Ruby's Set isn't even implemented with an Array. The core mathematical definition of Set is based on element membership[1]. All of the characteristic operations on sets (intersection, union, difference, etc) are derived based on element membership. When #=== has the common semantics in Ruby of membership, why should the one class, which is probably most closely tied to the notion of membership, not implement this operator? FWIW, I would not be opposed to Array implementing #=== as a membership test either, but this is not a feature request for Array. 1. "Set theory begins with a fundamental binary relation between an object o and a set A. If o is a member (or element) of A, the notation o ��� A is used." https://en.wikipedia.org/wiki/Set_theory ---------------------------------------- Feature #13801: Implement case equality test for Set#=== https://bugs.ruby-lang.org/issues/13801#change-66289 * Author: davidarnold (David Arnold) * Status: Open * Priority: Normal * Assignee: knu (Akinori MUSHA) * Target version: ---------------------------------------- In keeping with other class semantics, Set should implement an inclusion / membership test for #===. For example with Range: ~~~ ruby (1..3) === 2 #=> true ~~~ Desired behavior: ~~~ ruby Set[1, 2, 3] === 2 #=> true ~~~ Current behavior: ~~~ ruby Set[1, 2, 3] === 2 #=> false ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: