On 10.06.2018 12:21, OlegZ wrote:
On Saturday, 9 June 2018 at 22:28:22 UTC, Ali Çehreli wrote:
There is some explanation at the following page, of how the lambda syntax is related to the full syntax:
  http://ddili.org/ders/d.en/lambda.html#ix_lambda.=%3E

copy rect from article as image https://i.gyazo.com/c23a9139688b7ed59fbe9c6cdcf91b93.png > well, I can to remember that lambda () => { return ..; } returns another implicit lambda

you shouldn't remember it. you need to understand that `a=>2*a` is short form of `(a) { return 2a; }. So using `a=>{ return 2*a; }` you get
```
(a) { return (){ return 2*a; }; }
```
i.e. a function returning delegate.
```
a => { return 2*a; }
  /\  \           /
  ||   \         /
  ||    \       /
  ||     \     /
  ||      \   /
 This is   \ /
 function   \  This is definition of delegate
 definition  \

        so you have a function that returns delegate.

```
it's like
a => a => 2*a;
or
(a){ return () { return 2*a; }

just first version is much simpler and namely convenience is the reason of this syntax I guess. >
can somebody tell me please what was the reason that lambda (blah) => { return value + 1; } actionally returns another lambda that returns value+1? what case it can be usefull? why Dlang gives me lambda of lambda where I want lambda written with "=> { return"?
I am expecting some magic and simple trick with lambdas.

You misuse two different form of the same. The form with "=>" is very convenient if expression is short, in other cases the form `(){}` is suited better.

Reply via email to