F# is a succinct, expressive, and efficient functional and object-oriented language for Microsoft .NET that helps you write simple code to solve complex problems.
These pages are the historical home of F# at Microsoft Research. For the latest information on F# today, see the links to the right.
F# brings you type safe, succinct, efficient, and expressive functional programming language. This simple and pragmatic language has particular strengths in data-oriented programming, parallel I/O programming, parallel CPU programming, scripting, and algorithmic development. It enables you to access a huge library and tools base and comes with a strong set of development tools. F# combines the advantages of typed functional programming with high-quality, well-supported modern runtime systems. F# 3.0 incorporates ground-breaking features in integrating Internet-scale information sources and services into strongly typed programming languages. The active F# community contributes tools for Emacs, Vim, Linux, Mac, iOS, Windows, Android, JavaScript, and HTML5.
Microsoft Research contributes to F# through the language design and Try F#.
F# is open source under an OSI-approved license (Apache 2.0) and is available across multiple platforms through the F# Software Foundation. You can contribute to F# in many ways, including through that organization.
Microsoft make free Visual F# Tools for Visual Studio and these tools are also included in Visual Studio Professional and Ultimate. This makes F# one of the few languages with both a strong open source community and a supported, professional product from Microsoft.
F# originated at Microsoft Research, Cambridge. The Microsoft Research team continues to partner with teams across Microsoft and with external open-source organizations, researchers, companies and users to break new ground in programming language systems, including F#. Microsoft Research staff continue to contribute to F#, its ecosystem and research based around F#.
For more information on using F# today, see the links below.
-
F# Historical Acknowledgements
These pages document F# as a research project. For further information on using F# today, see The Visual F# Developer Center and The F# Open Source Group.
F# was originally designed and implemented by Don Syme. James Margetson then joined the team at Microsoft Research and has made many contributions to the design and implementation. Many other contributors, users and people helped with F# in its early days. Some particular people to mention are: Byron Cook, James Huddleston, Dominic Cooney, Robert Pickering, optionsScalper, Greg Neverov, Tomas Petricek, Joel Pobar, Ralf Herbrich, Antonio Cisterni, and Adam Granicz.
F# is related to the design of Generics for .NET and thus owes a lot to Andrew Kennedy, who co-designed generics with Don Syme. Andrew is a co-designer of F#, being the designer and implementor of units-of-measure for F#.
Many research projects and prior language designs contain work relevant to F#, much of which has directly or indirectly influenced its design. Although F# is a complete re-implementation of a Caml-like language, a special thanks go to the Caml team, in particular Xavier Leroy, who agreed that a ‘Caml.NET’ was a good thing to do. Xavier and others also suggested we experiment with language design instead of just implementing OCaml, which ultimately led to many good things. Also thanks to Jacques Garrigue who gave some helpful positive feedback. The OCaml team’s work on both the language and the core foundations of programming remains an ongoing inspiration for us.
The F# team are especially grateful to members of other language communities who have been willing to give us advice about F# and to help us talk through aspects of the design. This includes Anders Hejlsberg, Simon Marlow, Simon Peyton-Jones, Phil Wadler, Mads Torgersen and Martin Odersky. We’re also grateful for the support of colleagues in the Microsoft Research Programming Principles and Tools group.
F# would not exist without the incredible work of the Microsoft Developer Division, especially the .NET Common Language Runtime team, the .NET Framework team, the C# team and the Visual Studio team.
Mads Torgorsen and Raj Pai were responsible for making the initial pitch to create Visual F# and the Microsoft Developer Division led by S. Somasegar is responsible for the Visual F# tools. Luke Hoban was the program manager tasked with bringing the F# language and the Visual F# tools to market, including building on the initial momentum and success created by Microsoft Research and ensuring widespread industry adoption for analytical programming. Hoban gained widespread recognition at Microsoft for his work on F# and during 2009 and 2010 took on an increasing leadership role in the team. Tim Ng was engineering lead during this time.
We have special memories of James Huddleston of Apress who took a lead in publishing activities related to F#, which has led to Foundations of F# and Expert F#. James passed away in early 2007. Dominic Cooney was an enthusiastic early adopter, played a significant role in the design of the F# object system. Robert Pickering was one of the earliest external F# adopters, and now has his own F# website and the F# Wiki.
Satnam Singh, David Langworthy and Dave Wecker have been enthusiastic early adopters at Microsoft, as have Lars Nilsson, Artem Prysyazhnuk, Julian Laugel, SooHyoung Oh, optionsScalper, Dru Sellers, Martin Churchill and Adam Granicz externally, some of whom are now driving fantastic F# community initiatives of their own. Mathieu Verbaere, Ran Ettinger and Oege de Moor at Oxford University used early versions of F# on a number of projects, including JunGL. Jack Palevich first took the dive into combining F# with DirectX, leading to many good things in the development of F#.
Damien Watkins, Martin Szummer and Gavin Bierman were regular early co-conspirators in F#-related matters and have given talks and demonstrations on F# at several events. Tom Minka has been a useful colleague (though still programs mostly in C#. John Winn, Tom Melham and Jim Grundy helped inspire the design of F# quotations.
For further information on using F# today, see The Visual F# Developer Center and The F# Open Source Group.
-
-
-
-
-
People
Don Syme
Principal Researcher
Kenji Takeda
Director, Academic Health and AI Partnerships