During its evolution C# gradually gets more and more features which belong to functional paradigm.

Subjectively these features allow (at least me) to be more productive, fluent and write maintainable and readable code (well.. I thins so).

But I'm curious whether some rigorous proofs (not just testimonials) exist that for some particular task functional paradigm shines comparing to imperative one.

I've heard many times about thread safety due data immutability, but are there more examples?

A friend of mine just asked me:

Imagine that C# and F# developers are payed equally and can be easily hired. For projects of which type would you clearly vote for F#?

Sure, it is not an 'either or' dichotomy, nevertheless it would be nice to have a kind of decision tree for choosing from functional or imperative. Especially for corner cases when there is clearly a winner.

closed as too broad by Telastyn, gnat, Robert Harvey, David Arno, Daenyth Nov 16 '16 at 17:33

Please edit the question to limit it to a specific problem with enough detail to identify an adequate answer. Avoid asking multiple distinct questions at once. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.