Issue #5185 has been updated by alexeymuranov (Alexey Muranov). =begin As the topic is surprising behavior of (({Set})) methods, i propose to deprecate (({Set#+})) as an alias of (({Set#|})), and maybe use it later for the symmetric difference. Currently (({Set#+})) is one of a few (if not the only) use of (({#+})) for an operation which is not injective in each of the arguments: for sets (({a})), (({b})), (({c})), the equality (({a + b == a + c})) does not imply (({b == c})). I can open a new issue for this if there is some interest. =end ---------------------------------------- Feature #5185: Set#merge acts in place but Hash#merge does not https://bugs.ruby-lang.org/issues/5185#change-26699 Author: trans (Thomas Sawyer) Status: Assigned Priority: Normal Assignee: knu (Akinori MUSHA) Category: lib Target version: 2.0.0 Waste of brain cells to have to learn and recall they are different. The expected method would be Set#merge!, Set#merge would return a new Set instance. OTOH, why not Set#concat ? Or conversely, Array#merge ? -- http://bugs.ruby-lang.org/