News for hackers. Stuff that matters.
Re:C++14 lambda tutorial by cengizkrbck on Thursday August 28, 2014 @09:52AM (#8237171)
In python, lambda usage extremly beautiful. Also, 'lambda' keyword solves readibility problem. I expected a keyword. Is there any challenge to add keyword?
Re:C++14 lambda tutorial by TillE on Thursday August 28, 2014 @10:04AM (#8237223)
Not shown in this article are all the things you can do within the [] (typically just [&] or [=]), which turns a simple lambda into a closure.

The syntax is a bit arcane, but it does what it needs to. They could've stuck a "lambda" keyword in front of it all, but it's not necessary, and making a new keyword always has the potential to break old code.

Re:C++14 lambda tutorial by guidopallemans on Thursday August 28, 2014 @10:58AM (#8237493)
is it possible to do

#define lambda []

?

Re:C++14 lambda tutorial by Kronopath on Thursday August 28, 2014 @11:16AM (#8237600)
I think that's possible, but I would strangle anyone who actually did that. At that point, not only are you pointlessly redefining the language just so it can feel slightly more familiar to people who are more comfortable with Python and the like, but you also completely lose the ability to enclose variables in the square brackets to make a closure.

If you're going to write C++, then write C++. Don't redefine language constructs to fit the patterns of your other favourite language.

Re:C++14 lambda tutorial by leni536 on Thursday August 28, 2014 @11:56AM (#8237845)
I think you can

  #define begin {
  #define end   }
too. I would not suggest it though.
Re:C++14 lambda tutorial by kps on Thursday August 28, 2014 @01:49PM (#8238651)
Re:C++14 lambda tutorial by VMG on Thursday August 28, 2014 @10:02AM (#8237213)
Backwards compatability. Old valid code should remain valid. That includes code which calculates wavelengths.
Re:C++14 lambda tutorial by thelinked on Thursday August 28, 2014 @10:09AM (#8237257)
An interesting example of C++ not being able to introduce new keywords is the co-opting of auto in C++11 from a storage class to type deduction.
Re:C++14 lambda tutorial by ninkendo on Thursday August 28, 2014 @10:15AM (#8237282)
But they had a decent justification: the auto keyword literally did nothing in C++. The only place it was valid, it was also the default.
Re:C++14 lambda tutorial by danielweber on Thursday August 28, 2014 @01:20PM (#8238468)
IIRC they audited a bunch of projects to see if anyone was using auto somewhere besides test code explicitly for the auto-keyword, and found nothing.
Re:C++14 lambda tutorial by leni536 on Thursday August 28, 2014 @10:33AM (#8237357)
I don't like that in python you are enforced to only use a single expression in lambda. Sure, writing long lambda functions is ugly but I don't think python should enforce a given coding style in the language level.
Re:C++14 lambda tutorial by crazypyro on Thursday August 28, 2014 @10:48AM (#8237436)
Isn't that literally a core principal of Python? They enforce all kind of coding styles within the language, not the mention all the PEPs.
Re:C++14 lambda tutorial by leni536 on Thursday August 28, 2014 @11:50AM (#8237813)
But PEPs are not enforced in the language level. Also there are cases where there could fit two simple expression in a lambda. Also the language still doesn't stop you from abusing lambdas, you can nest them. It could be stated in one of the PEPs that "no overly complicated lambdas" and that's it, there is no need for the language to enforce this.
Re:C++14 lambda tutorial by crazypyro on Thursday August 28, 2014 @01:23PM (#8238485)
PEPs are literally the language, in my opinion. It may not be enforced on an implementation level, but some have been. You can't mix spaces and tabs now. That seems like a style choice being enforced on every level.
Re:C++14 lambda tutorial by rbonvall on Thursday August 28, 2014 @12:25PM (#8238054)
While I see the use for multi-statement lambdas, and I use them all the time in {Java,Coffee}Script, they are rarely needed in Python as there is always a more idiomatic way to write the code. In particular, with for loops and generator expressions (~list comprehensions) you can cover almost all uses of .each, .map, .filter, .some (`any` in Python), .every (`all` in Python), etc.
Re:C++14 lambda tutorial by tel on Thursday August 28, 2014 @10:49AM (#8237440)
That also dramatically reduces the value of lambdas. Without that limitation then they work as anonymous blocks of any complexity.