Perhaps in the vein of OCaml, we could use {[]} for set literals? On Sat, Dec 3, 2011 at 4:53 PM, Jos Backus <jos / catnook.com> wrote: > > 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 > >