Recs.
Updated
F# is a statically typed, functional-first programming language that encompasses imperative and object-oriented techniques and features global type inference.
SpecsUpdate
Pros
Pro Allows writing predictable code
Like many other functional languages, F# takes a stance of immutability for most of its constructs (state, values etc...). There are several reasons why having immutable values is good. One of those is that the code you are writing becomes much more predictable and you don't have to worry about any side effects.
Pro Computation expressions
Computation Expressions, also known as Monads in other languages, are an advanced F# feature that provides a means to model different ways of programming that are often difficult to do using standard programming techniques. By using Computation Expressions, F# was able to add async capabilities in 2007, 5 years ahead of C#.
Pro Type providers
Type Providers plug into the F# compiler and covert external structured or semi-structured data into a set of types, properties and methods that can be used by the F# type system. A wide variety of TPs exist, ranging from a simple CSV reader to one allowing simple access to R programming language libraries.
Pro With the purchase of Xamarin, F# is now mainstream for cross-platform mobile apps
Cons
Con Not really cross platform
Though the community sites are touting F# can be cross platform through use of Mono, the reality is that it is more of a hack to replay on larger mono applications in production.