--000feaefb8c45fbd770471c98d08 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Sat, Aug 22, 2009 at 7:38 PM, Caleb Clausen <caleb / inforadical.net>wrote: > Yehuda Katz wrote: > >> I'd like to propose that we add the following syntax for procs in Ruby: >> >> x contents } >> x |y| contents } >> { contents }.should raise_error(Exception) >> call_method({ proc_1 }, { proc_2 }, { proc_3 }) >> Essentially, any use of {} that was not a Hash would become a proc. >> Effectively, this includes all use of {} that produces a SyntaxError at the >> moment ({} remains the equivalent of Hash.new). I suggested this to >> > > How do you disambiguate this case: > > { foo bar baz } > > which could be parsed 2 ways: > { foo(bar) baz } #a hash > or > { foo(baraz) } #a block Things that currently don't parse are fine to become blocks. I'd be worried about a case that currently parsed fine as a Hash but might be expected to be parsed as a block if this feature existed. Can you think of any? > > > (Note, however, that the first snippet is currently a syntax error....) > > I think Rick DeNatale raises a good point too. > > Ruby 1.9 used to have a feature like this, but it was taken out, I think > out of fear of the ambiguities it creates. As a user, I like this feature a > lot. But as an implementor of ruby's syntax, I've learned to dread > ambiguities; they just make my life hard. That's not necessarily a reason > not to do it, but I would like the ambiguities to be very carefully > considered and explicitly mapped out. > > -- Yehuda Katz Developer | Engine Yard (ph) 718.877.1325 --000feaefb8c45fbd770471c98d08 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable <br><br><div class="gmail_quote">On Sat, Aug 22, 2009 at 7:38 PM, Caleb Clausen <span dir="ltr"><caleb / inforadical.net></span> wrote:<br><blockquote class="gmail_quote"tyle="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"> <div class="im">Yehuda Katz wrote:<br> <blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"> I'd like to propose that we add the following syntax for procs in Ruby:<br> <br> ¨Β γοξτεξτσ ύΌβς ¨Β όωγοξτεξτσ ύΌβς ¨Β γοξτεξτσ ύ®σθουμδ ςαισείεςςος¨Εψγεπτιοξ©ΌβςΎ ¨Βαμμίνετθοδ¨ϋ πςογί± ύ¬ πςογί² ύ¬ πςογί³ ύ©ΌβςΎ ¨Βσσεξτιαμμωαξυσοζ ϋύ τθατ χαξοΘασθ χουμβεγονε πςογΕζζεγτιφεμω¬ τθισ ιξγμυδεσ αμυσοζ ϋύ τθατ πςοδυγεσ ΣωξταψΕςςοατ τθνονεξτ ¨ϋςεναιξτθερυιφαμεξτ οζ Θασθ®ξεχ©® συηηεστετθισ το ΌβςΎ </blockquote> <br></div> How do you disambiguate this case:<br> <br> ¨Β ζοβὦητβαύΌβς<br> which could be parsed 2 ways:<br> ¨Β ζοο¨βας© ½¦ητβα£α θασθΌβςΎ or<br> ¨Β ζοο¨βας½¦ητ»βαϊ© £α βμογλΌ―βμογλρυοτεΎΌδιφΎΌβςΎΌ―διφΎΌδιφΎΤθιξησ τθατ γυςςεξτμδο³Ή»παςσαςζιξε το βεγονε βμογλσΙ¦£³Ή»βε χοςςιεαβουγασε τθατ γυςςεξτμπαςσεδ ζιξε ασ Θασθ βυνιηθβε εψπεγτεδ το βε παςσεδ ασ βμογιζ τθισ ζεατυςεψιστεδ® Γαωοτθιξοζ αξωΏΌ―διφΎ <div>/div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br> <br> (Note, however, that the first snippet is currently a syntax error....)<br> <br> I think Rick DeNatale raises a good point too.<br> <br> Ruby 1.9 used to have a feature like this, but it was taken out, I think out of fear of the ambiguities it creates. As a user, I like this feature a lot. But as an implementor of ruby's syntax, I've learned to dread ambiguities; they just make my life hard. That's not necessarily a reason not to do it, but I would like the ambiguities to be very carefully considered and explicitly mapped out.<br> <br> </blockquote></div><br><br clear="all"><br>-- <br>Yehuda Katz<br>Developer | Engine Yard<br>(ph) 718.877.1325<br> --000feaefb8c45fbd770471c98d08--