Recs.
Updated
F# is a mature, open source, cross-platform, functional-first programming language. It empowers users and organizations to tackle complex computing problems with simple, maintainable and robust code.
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 Many advanced features
- strong static type system with type inference yet still simple
- type providers (= F# version of LINQ)
- pattern matching & discriminated unions (= algebraic data types)
- async workflows
- computation expressions (= monads)
- parallelism support
- immutability support
- laziness support
- units of measure
Pro Easier transition from other paradigms
Since F# is not a purely functional language, it lends itself to being more easily picked up by programmers that have experience with other paradigms.
Pro Fall into the pit of success
F# directs you into a workflow where the right way is the path of least resistance.
Coming from a C# background, its restrictions might feel arbitrary at first (e.g., what do you mean my code has to be in dependency order!? Arbitrary alphabetical or bust!), but you'll soon realize that your code is cohesive, concise and consistent in a way that it never was before - and you can compile and run with confidence!
Pro Natively supported by Visual Studio
This is a .Net language natively supported by Visual Studio. Though it is not as tooled up as C# the support is still substantial. In particular, C# deployment scenarios can be enabled for it with small C# wrapper projects. Integration with Visual Studio provides: IntelliSense, debugging, projects an other features.
Cons
Recommendations
Comments
Out of Date Pros + 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.