See the blog at:
Alfred mentions the F# language included in the latest Visual Studio Studio. F# is object oriented, although it can be strictly functional as well or a mix of both.
However, I think that Carnegie Mellon is doing the right thing to use functional programming in the beginning programming class. See Robert Harper’s blog about the class.
As an Electrical Engineer, and having worked in Electrical Engineering, the computer scientists need some control over the complex software that is being created, and functional programming is one way to do this. If I am simulating what happens to a grid when I get a power drop due to an accident loss of power, I do not need variables that are all over the place.
On the other hand, if I am writing a game program, invariant variables aren’t real useful. To eliminate object oriented programming from the Freshman course is a bold move.
Fortunately the most interesting work in software is usually done by people who have no interest in “Computer Science”, they just want to get the job done and make sure that the software does what it is expected to do. Imperative, functional, unicorn based, or whatever, makes no difference to most people, even most people who design software.
If it works and stays working is the test. Cool structures, haskell, blah and blah, the financial manager doesn’t care if they miss that business analysis needed to make a bazillion dollars.
For example to attract women to software jobs, I simply tell them to get the degree they want, then if they have time take a few classes on software and ignore the discrete math, etc. I have tracked a few through, and you know what, they are working successfully creating advance software.
So, bottom line: Just learn how to write software however you want to, and then do it.