I’ve heard this argument a few times–“why should I learn FP language x when I can do all of that stuff in my existing language y”? The simple answer is that FP languages support primitives that make it much easier to work in a functional way. There are a few things that FP languages support:
1.) Default immutability.
2.) First class functions
3.) Lambdas
Now they can tack several FP features on to C# but C# will never be immutable by default. And as long as it’s not immutable by default, developers will continue to write mutable code because developers aren’t going to fight the language. Developers will take the defaults unless there’s a very good reason to do otherwise. Most developers accept side-effect errors as a fact of life since they’re mostly accustomed to writing imperative code.
Have you ever tried passing a function or returning a function from another function in C#? The syntax is very clumsy. Even in F# (which is still a .Net language) the syntax is much cleaner and therefore easier to follow.
The “there are lots of jobs for C#” argument is hard to debate. They’re right–there are lots of jobs for C#. But by that reasoning, there are highly paid jobs for COBOL and FORTRAN too which are going unfilled. So why bother to teach young people OO and C# when you could be teaching them how to work with COBOL and FORTRAN and they could be making lots of money.
Just wanted to weigh in. As a long time C# developer, I sincerely hope that we can get past C#.


















