F#: Microsoft's new language is CAML for .NET. CAML is a functional language, a family of languages that include Scheme, Miranda, and Haskell, and which emphasize the evaluation of expressions, rather than the execution of commands. If that seems esoteric, it's because functional programming is more of a mindset than a technology: you can write functionally in an imperative language like C# and, for that matter, you can write imperatively in a functional language like CAML. The big thing about functional programming is that you concentrate on "the left-hand side of things" -- what is returned by a function call, rather than side-effects rising from manipulation of state on "the right hand side." If that's still too esoteric, try this: there are no assignments, once x is set to a value, it doesn't change.
F# doesn't (yet?) have an interactive console for defining and modifying code on the run, which strikes me as an important benefit of most traditional functional systems. (If you've used Python or Smalltalk, you know how nice an interactive console is.)
I'm not sure that I'd go so far as to say that there is a particular class of problem that functional languages absolutely solve better than imperative languages, but I think I can accurately say that functional programming and imperative programming engage the mind in different ways. To me, the biggest hope of the .NET CLR is that it will foster different programming paradigms, while providing the complete power of the API. Object-oriented imperative languages are great, but for Pete's sake, they aren't the ultimate expression of programming.