F# is a variant of the ML programming language for .NET and has a core language that is similar to that of OCaml.
It is a mixed functional/imperative/object-oriented programming language which is excellent for medium-advanced programmers and for teaching. In addition, you can access hundreds of .NET libraries using F#, and the F# code you write can be accessed from C# and other .NET languages.
The program flow of F# more closely resembles a functional language as the code consists mainly of functions (i.e. expressions). The key to F# is to rarely rely on the updating of variables for the purposes of creating side-effects (as is common in C oriented languages like Java, C#).
Functional programming, for example, does not allow mutable states to exist.
But from its imperative ancestors, F# does retain the ability to create variables and update these variables later. That implies that you can program in F# using a Java/C-mentality and use variables to keep track of various environmental factors.
Critics say that functional languages are inefficient. But according to Burton Smith Sisal and NESL, are excellent counter-examples. On Cray systems they could run as fast as Fortran."
The 1.9.2.9 release of F# compiler includes a command line compiler as well as 'F# for Visual Studio', which provides interactive syntax highlighting, parsing, typechecking and intellisense for F# code inside Visual Studio 2003/2005/Orcas, and 'F# Interactive', a command-line top level environment for F#.
You can download the compiler from here