If you want to check the maturity of something like a technology, you face with lots of uncertain aspects of it, which makes it difficult to assess easily. In such situations you look for some miracles. And believe me, asking right questions are miracles. I think, one of the questions that seems like a magic is:
What's the this technology is talking about: " How" or " What"?
I know that the question is a little confusing. In fact, the main content of next paragraphs are describing this confusing question: How vs. What.
Years ago, when the first computers were started to work, Assembly was the most prominent language. Using Assembly, if you want to add two numbers, or use a condition to decide what to do, you should tell the computer how to do it: (1) Load a register, (2) add something to the register, (3) read the register, …
But after some years, easier languages came into the market, like Basic, Fortran, Pascal and C. In these languages you didn't have to say how to add two numbers or how to create a condition. You simply used "+" or "if" to describe what do you want the computer do for you. That great day! That was the day that I proudly name it "The Dependence Day of Arithmetic Calculations"!
The Dependence Day of Arithmetic Calculations was the day you were free of saying how, instead you freely said what!!
In the technologies life cycle, this story is happening again and again. You can see how old command line based operating systems like "MS-DOS" or "Unix" changed to "Windows" or "Linux". Again, a transition from "How" to "What"
In the field of programming languages syntax, which is always one of my hobbies, you can feel this transition. A transition from how-level concepts to what-level concepts.
Some of the latest concepts that brought a new what-level maturity to the languages, are Object Oriented and Functional Programming.
Although they seem a little controversial nowadays. But I think they can be used together, just like mixing different colors to create a new artistic paint.
Watching the market, you can see that the most of functional programming concepts are growing around Dynamic Languages. In fact, I believe dynamic languages seem very better places (incubators) for functional programming ideas to grow. But that doesn't mean that functional programming is in contradiction with typed languages.
Functional Programming is a what-level concept and a what-level concept has a high chance of success in the market. Emergence of LINQ (Language Integrated Query) in C# and its huge effect in the language acceptance is something you can feel. Adding lambda to Java 8 is also another sample of how functional programming is getting mixed with typed languages.