July 11, 2013 Re: Is the compiler supposed to accept this? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brian Schott | On Wednesday, 10 July 2013 at 21:33:00 UTC, Brian Schott wrote:
> On Wednesday, 10 July 2013 at 21:16:30 UTC, Timon Gehr wrote:
>> // (parameters) => expression ?
>>
>> In any case, please consider that it actually makes no sense to restrict the expressiveness of the type signature based on how the function body is specified. (Why on earth should one have to use the { return expression; } syntax just in order to be able to assert that no context pointer is required?)
>>
>> The documentation is in error here.
>
> "(parameters) => expression" is mentioned in the source and I agree it's valid. I must have forgotton to copy-paste it.
>
> I don't agree that "function(parameters) => expression" is valid though. Can any of the DMD devs clear up if this is intended?
I don't see how DMD implementation matters here. This is language design issue.
|
July 11, 2013 Re: Is the compiler supposed to accept this? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Brian Schott Attachments:
| This is accepts-valid behavior.
function(parameters) => expr
means the combination of:
1. specifying "context pointer is not necessary"
2. lambda syntax "(parameters) => expr"
I think website documentation has a bug.
Kenji Hara
2013/7/10 Brian Schott <briancschott@gmail.com>
> While finishing up work on my parser and grammar specification I found this in container.d:
>
> return equal!(function(Elem a, Elem b) => !_less(a,b) && !_less(b,a))
> (thisRange, thatRange);
>
> It seems to be some strange hybrid of the function literal syntax and the lambda syntax. It's not documented anywhere (surprise!) and I'm not sure if I should support it or file an accepts-invalid bug against DMD.
>
|
July 11, 2013 Re: Is the compiler supposed to accept this? | ||||
---|---|---|---|---|
| ||||
Attachments:
| I filed the website bug in bugzilla, and posted pull request. http://d.puremagic.com/issues/show_bug.cgi?id=10605 https://github.com/D-Programming-Language/dlang.org/pull/351 Kenji Hara 2013/7/11 Kenji Hara <k.hara.pg@gmail.com> > This is accepts-valid behavior. > > function(parameters) => expr > > means the combination of: > > 1. specifying "context pointer is not necessary" > 2. lambda syntax "(parameters) => expr" > > I think website documentation has a bug. > > Kenji Hara > > > > 2013/7/10 Brian Schott <briancschott@gmail.com> > >> While finishing up work on my parser and grammar specification I found this in container.d: >> >> return equal!(function(Elem a, Elem b) => !_less(a,b) && !_less(b,a)) >> (thisRange, thatRange); >> >> It seems to be some strange hybrid of the function literal syntax and the lambda syntax. It's not documented anywhere (surprise!) and I'm not sure if I should support it or file an accepts-invalid bug against DMD. >> > > |
July 11, 2013 Re: Is the compiler supposed to accept this? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Kenji Hara | On Thursday, 11 July 2013 at 04:59:14 UTC, Kenji Hara wrote: > I filed the website bug in bugzilla, and posted pull request. > > http://d.puremagic.com/issues/show_bug.cgi?id=10605 > https://github.com/D-Programming-Language/dlang.org/pull/351 > > Kenji Hara > http://msalvarez1.edublogs.org/files/2010/01/rock_rule2.jpg |
Copyright © 1999-2021 by the D Language Foundation