On Oct 21, 10:31 pm, Dave Thomas <d... / pragprog.com> wrote:
> On Oct 21, 2008, at 8:39 PM, Trans wrote:
>
> > It something that will take getting used to, but I think matz has
> > gotten this right actually.
>
> Then deprecate lambda. Because having two totally disjoint ways of  
> doing the same thing makes the language diffuse, and can only be a  
> source of confusion. This is a lot worse than having aliased methods,  
> where the syntax is the same and the names are different. The two  
> syntaxes here are totally alien. Choose one, and lose the other, I say.

I see what you're saying, and it's a good point. But I think perhaps
the two serve different purposes, sort of along the same lines that
{ }'s are usually used for one-liner blocks and do..end for multiple
lines.

We don't see a lot of this in Ruby:

  foo(lambda{|x| x.upcase })

On the whole, it's too verbose. But I think we would see a little more
of it if we could do:

  foo(->x{x.upcase})

I know, it's not the most beautiful syntax in the world. I think that
mainly b/c the '->' looks like an arrow. If we could use the actual ,
I don't think there would be nearly as much protest.

  foo(x{x.upcase})

T.