What does C# miss that F# has, in today's .NET 4 world?
F# has units of measure, some syntactic sugar for type fiddling, type providers (which are cool for programming language theorists, but I haven't seen them do much in practice yet). But mostly F#'s fancy pattern matching capabilities.
Personally I don't think that those are anywhere near enough, given C#'s advantages with tooling and more natural integration with existing .NET code.
Well, referential transparency and deep immutability are quite generally useful tools in my opinion that deserve to be used a lot more. Tools, that is, that I would wish to be able to opt into whenever I want, instead of getting them shoved down my throat, after which I have to take a doctorate in CS to relearn how to print to the command line using monad-magic.
[/quote]
Indeed. And that's what we're seeing. Scala and C# pulling in the good stuff of functional programming to use where applicable.
On an unrelated note, I heartily despise the terseness of most functional languages.
[/quote]
I very much agree, though among programming language theorists it's not even discussed. Take a look through LtU sometime and see how much of the site is dedicated to programmer usability. But then again, I tend to be on the far end of the spectrum in wanting/making verbose programming languages.