Search
is there a difference between those two notations
Apr 30, 2012
Christian Köstlin
Apr 30, 2012
Jesse Phillips
Apr 30, 2012
Jonathan M Davis
Apr 30, 2012
Christian Köstlin
Apr 30, 2012
bearophile
May 02, 2012
Christian Köstlin
May 01, 2012
Timon Gehr
```reduce!((int a, int b){return a+b;})(iota(100))
reduce!("a+b")(iota(100))

christian koestlin
```
```On Monday, 30 April 2012 at 15:19:02 UTC, Christian Köstlin wrote:
> reduce!((int a, int b){return a+b;})(iota(100))
> reduce!("a+b")(iota(100))
>
>
> christian koestlin

The answer to your question should be no. The second is transformed into a delegate like the first during compilation.

Note that there is also C# like lambdas

(a, b) => a+b
```
```On Monday, April 30, 2012 17:19:00 Christian Köstlin wrote:
> reduce!((int a, int b){return a+b;})(iota(100))
> reduce!("a+b")(iota(100))
>

The first one directly creates a lambda, whereas the second one uses a string mixin with std.function.binaryFunc to create a lambda. The lambda generated for the second one will be the same as the one given in the first. They're just different ways to do the same thing.

- Jonathan M Davis
```
```On 04/30/2012 07:04 PM, Jonathan M Davis wrote:
> On Monday, April 30, 2012 17:19:00 Christian Köstlin wrote:
>> reduce!((int a, int b){return a+b;})(iota(100))
>> reduce!("a+b")(iota(100))
>>
>
> The first one directly creates a lambda, whereas the second one uses a string
> mixin with std.function.binaryFunc to create a lambda. The lambda generated
> for the second one will be the same as the one given in the first. They're just
> different ways to do the same thing.
>
> - Jonathan M Davis
thanks a lot ... should have had a look in https://github.com/D-Programming-Language/phobos/blob/master/std/algorithm.d ...

regards

christian koestlin
```
```Christian Köstlin:

> reduce!((int a, int b){return a+b;})(iota(100))
> reduce!("a+b")(iota(100))

Today the syntaxes I prefer are:

iota(100).reduce!q{a + b}()

iota(100).reduce!((a, b) => a + b)()

But hopefully in some we'll have an efficient sum() function too in Phobos:

iota(100).sum()

Bye,
bearophile
```
```On 04/30/2012 05:19 PM, Christian Köstlin wrote:
> reduce!((int a, int b){return a+b;})(iota(100))
> reduce!("a+b")(iota(100))
>
>
> christian koestlin

In this case there is not. But if external symbols are to be referred to inside the lambda, then the second notation cannot be used.
```
```On 04/30/2012 11:03 PM, bearophile wrote:
> Christian Köstlin:
>
>> reduce!((int a, int b){return a+b;})(iota(100))
>> reduce!("a+b")(iota(100))
>
> Today the syntaxes I prefer are:
>
> iota(100).reduce!q{a + b}()
>
> iota(100).reduce!((a, b) => a + b)()
>
> But hopefully in some we'll have an efficient sum() function too in Phobos:
>
> iota(100).sum()
>
> Bye,
> bearophile
thanks for this tip.