F# is released with Visual Studio 2010. Below you can find FAQ about F# and get started at Microsoft F# Development Center.
Reposted from Don Syme’s blog:
Q: What is F#?
F# is a productive functional and object-oriented programming language for .NET that enables users to write simple code to solve complex problems. Its succinct syntax and powerful type inference lets users stay closer to the domain they are working in, and the integration into .NET and Visual Studio gives rich access to the expansive .NET platform.
F# has strong support for parallelism and concurrency, through its support for immutability and asynchronous programming, and tools such as the F# Interactive enable exploring data interactively, analyzing, visualizing and testing against live data sources. The development process then scales directly up to full .NET component development, without having to re-write code.
Q: What is F# designed for?
F# extends the .NET platform by offering a productive language for developers working in technical, algorithmic, parallel and data-rich areas. This has included applications in domains such as financial services, data analytics, games, sciences and machine learning. But F# is also a general purpose .NET programming language, and the combination of language strengths makes F# valuable in a broad range of development applications.
Q: What were your big objectives when designing F#?
F#’s primary design goal has been to combine the simple expressivity of functional programming with the scalability of .NET and object-oriented programming.
Q: What is functional programming?
Functional programming languages express ideas at a higher level and allow users to focus on the challenge of problem solving instead of the process of writing code. A programming language like F# provides a ‘tool bag’ of functions that users can pick from to solve their problem. Functional programming includes concepts such as immutability to reduce dependencies between components, generics to express solutions that work over many different kinds of data, and functions as values to make it easy to abstract units of a solution into reusable pieces.
Q: What are the primary benefits of functional programming?
Because it abstracts functionality from coding, F# lets programmers focus more on the problem domain and less on programming itself. That’s a big benefit in some of the data exploration, algorithmic and technical computing domains and so we’ve seen a lot of interest in using F# here. By raising the level of abstraction of how problems are solved, solutions tend to be simpler, more general, easier to test and more parallelizable.