From: Dave Thomas Date: 2008-05-26T23:14:56+09:00 Subject: Re: [PATCH] lambda with normal block syntax On May 26, 2008, at 8:54 AM, Yukihiro Matsumoto wrote: > "trouble with recognition"? I thought they hated the -> mark, mostly > because it's different from lambda symbols (and syntax) in other > languages (except for Perl6). I assumed those hatred will decrease > once they used to the new syntax. But I didn't recognized they had > recognition problem. My personal experience is that I don't find it a natural notation: when I see ->, I don't immediately think 'block coming'. Instead, I think 'pointer', 'member access', or something similar. So, for me, it really is a 'cognition' issue (so I guess the second time it's recognition). You asked people to try the patched syntax that allows meth {|a| a+1}, {|b| b*2} I think that this particular syntax is a lot less obtrusive, and a lot easier to recognize, than meth -> a { a + 1}, -> b { b * 2 } The first one is obviously a couple of blocks: that's what I read when I see {|a| ...}. It seems that most of the posters on this thread agree. And, using your criteria of "try it for a while and see", I'd judge that people have tried -> for a while, and might well be happier with the {|| } version. I'd also argue that the {|a| } makes for a better language. My experience teaching this stuff shows that people are confused by the large number of different options that surround blocks. Unifying block parameters with method parameters, and then removing the need for this somewhat strange -> notation, will reduce the number of special cases, and make it a lot easier for people to understand the language. And that's a major cognition win. Please, please consider adding both these patches into 1.9. Dave