Back when I worked at Microsoft Research in England, Don Syme already had his hands deep in the guts of .NET – he co-authored the original paper on generics for C#, and fought long and hard to get them accepted into v2.0 of the language. That’s no mean feat when you’re in a lab eight time zones away from the people you have to persuade to adopt your work!

He then went one better and built F#, a .NET implemention of the functional programming language ML. The key advance of F# is that it is completely interoperable with other languages – you can write modules in F# and call them from any other .NET language. Now programmers can use functional languages for the core algorithmic problem areas where they really shine, and stick to imperative languages for the uglier bits.

F# has been gradually building steam since then, adding the supporting infrastructure that you’d expect from a .NET language (Visual Studio authoring package, ASP.NET compatibility, …) and the cool features you’d expect from a programming language researcher (dynamic type test patterns, mutually dependent reactive values, …). Now it seems ready to take center-stage: Don has started a blog about F#, and his first post announces the preview release of F# version 1.0.