The lambda effectively is an anonymous class implementing that interface / that single method. U resolves to ? super String. I.e. it expects a method that takes String or a superclass thereof as its first parameter.
That's what e is. It all gets automatically pieced together at compile time via type inference.
I think that is true in the case of forEach loops. However there are plenty of other situations in which the lack of lambdas has made something simple far more complicated. One example is the Strategy Pattern. With lambdas it's a fairly simple thing. Without lambdas there are a bunch of hoops you have to jump through.
Additionally, I feel that lambdas enable constructs that are much clearer and easier to reason about. Consider the case where you want to transform ever element in a list and produce a new list. Without the map function (which depends on lambdas) the logic wouldn't be that bad, you would create an empty list and append each element ad they are processed in a for loop. However, the intent of your code is less clear. Add in filtering and the intention of the code in your for loop ends up quite a bit harder to understand compared to a fairly straightforward select and map.
I like the verbosity of anon classes, they make sense. They look right in the debugger. Lambdas do not look clear they look like vodoo, I very much dislike them and wish they'd never been introduced.
Why are there so many Haskell articles on HN? It seems like nearly every day there's one or more Haskell articles yet in the real world I've run into one guy in decades that even knew it.
"A language that doesn't affect the way you think about programming, is not worth knowing" -- Alan Perlis
It's not solely just about if it is ready for commercial/real-world applications right now. The language itself is interesting and it definitely shapes a different mode of thinking.
Haskell is evolving rapidly and in interesting ways and those that are interesting in programming (as most of us here are), it's a good place to look and learn from.
As an interesting side note, Microsoft just open sourced Bond. It's written in Haskell, and is a high performance, cross-language, schematized serialization tool. The project describes itself as widely used in many of Microsoft's high scalability services.
Microsoft has many proponents and detractors on HN, but no one can deny that they have plenty of services that get lots of traffic. If Haskell is serving a critical role in many of those services, then it seems that it is ready for commercial/real-world applications.
It's reassuring of the human condition that these two stick with it through thick and thin. Charting a course to success even when the medical expert(s) said otherwise.
Aging does not necessarily stop the ability to learn anything new. You cited your dad so I'll cite mine, he taught himself assembly programming for fun when he was in his late 60's. He lived to be 75 but always challenged himself to learn and do new things.
"There is solid evidence that neurogenesis (birth of brain cells) occurs in the adult, mammalian brain—and such changes can persist well into old age."
Here's another case cited in the same article above, "His father’s story was firsthand evidence that a ‘late recovery’ could occur even with a massive lesion in an elderly person."
http://cloudstack.apache.org/users.html