I was reading the (probable) new features of C# 6.0, and I can’t help but feel like C# wants to just be F# at this point but just doesn’t want to alienate its fans.
If imitation really is the sincerest form of flattery, then Don Syme must be very flattered by C# these days. Almost every version since 3.5 has just been implementing half assed versions things of F# already had (tuples, async and tasks I’m looking at you), and now with 6.0 it’s getting even worse.
The truth is that C# is turning into the new Java, a language that is afraid to change anything for fear of attacks from the Enterprise shops.
Don’t fear however, because I have a solution that will solve both problems: re-name F# 3.1 to C# 6.0 strict mode, and have C# 5.0 as C# 6.0 quirks mode. The enterpise shops will be happy because nothing will have changed (and they love that). All the non-enteripse devs will marvel at all the amazing new features that have been introduced to this “C# 6.0 strict mode”. How amazing it managed to support everything that C# 5.0 had, plus tonnes of improvements.
It would dramatically increase uptake of F#, it would also mean the C# team could concentrate on doing something other than shoehorning everything from F# into C#. Win-win-win-win-WIN for everyone!