Issue #5478 has been updated by Jos Backus.
How would one represent an empty Set?
'{}' can't be used as it would be ambiguous.
----------------------------------------
Feature #5478: import Set into core, add syntax
http://redmine.ruby-lang.org/issues/5478
Author: Konstantin Haase
Status: Open
Priority: Normal
Assignee:
Category:
Target version: 3.0
=begin
A set is a central data structure. However, a lot of Ruby developers use arrays for situations where it would be more reasonable to use a set. One reason for that is that it is way easier to use Array then Set at the moment, another one is that developers are simply not aware it exists.
I propose moving Set from the stdlib to core and possibly add a syntax or a method on array for creating Set literals.
First class syntax suggestions:
<1, 2, 3> # might be tricky to parse
#[1, 2, 3] # would collide with comments
$[1, 2, 3]
${1, 2, 3}
Method suggestions:
~[1, 2, 3]
+[1, 2, 3]
Whitespace separated String Sets could look like this:
%w<foo bar blah> # creates an array at the moment
#w[foo bar blah] # would collide with comments
$w[foo bar blah] # would collide with sending :[] to $w
$w{foo bar blah}
~%w[foo bar blah] # not really shorter than using an array with strings
+%w[foo bar balh] # not really shorter than using an array with strings
Maybe it's ok to not have a whitespace separated syntax, I'm just brainstorming here.
The issue with the method approach is that it would create an Array to send the message to first.
I favor the <1, 2, 3> syntax, possibly without the ability to create a whitespace separated version.
I'd be willing to work on a patch not only for MRI but also for JRuby and Rubinius if you would consider this to be useful.
Although I would need help with the parser.
=end
--
http://redmine.ruby-lang.org