Sun, 19 Dec 2010 01:24:43 +0000, JRM wrote:

> On Sat, 18 Dec 2010 16:01:37 -0800, Walter Bright wrote:
> 
>> Simen kjaeraas wrote:
>>> The problem of D's lambda syntax is it is optimized for longer
>>> functions. Usually, the delegates I write are one line long. I cannot
>>> see that this syntax collides with anything at the moment, but feel
>>> free to enlighten me:
>>> 
>>> { => 4; }
>>> { a => 2*a; }
>>> { a, b => a>b; }
>>> { => @ + @; } // turns into { a, b => a + b; }
>>> 
>>> 
>> If size and simplicity of typing are critical, are those really better
>> than:
>> 
>>    "a>b"
>> 
>> ?
> 
> I agree that those aren't really much better. This entire discussion
> seems a little odd to me.  People are trying to find a way to more
> easily write lambda's, focusing in particular on single expression
> lambda's.

Have you got any idea what a 'lambda' actually is? It originates from the 
lambda calculus. In lambda calculus the lambda abstraction is something 
that takes a single argument and returns an *expression*. You can argue 
that this is less general than D's delegates, but the fact is that many 
such functions such as sort, filter, map, reduce, ... return an 
expression. Of course the explicit return generates additional syntactic 
bloat.

> In order to support lazy, D already allows an expression to be
> implicitly converted to a delegate returning either void or the type of
> the expression.  This covers the case of lambda's taking no arguments,
> and happens to be shorter than any of the proposed syntaxes.

Sorry, don't remember how this works in D if you actually call the 
function with a delegate that isn't taking any arguments, but if the lazy 
generates another thunk, this doesn't work consistently.

> I think this idea (or something similar) is worth consideration.  It is
> simply a small extension to an already existing feature that would give
> D a terser syntax for lambda's than most of the other languages we've
> been discussing.

So in your opinion D's function literals should only be improved if you 
can somehow outwit existing languages, otherwise it just sounds like a 
stupid idea?

Reply via email to