The F# team currently includes approximately 12 contributors. Syme credits Hoban as an integral player for "his grasp of what makes for successful language development -- for everything from simplicity in an API design to pushing the boundaries with what can be done with the language."
"In many ways," Syme adds, "F# 2.0 represents the successful transfer of three independent major research results into product form. First, we have F# itself, developed by me with the assistance of James Margetson. Next, Andrew Kennedy has contributed the design and implementation of units of measure in F#, a direct transfer of the beautiful ideas from his research work. Finally, F# parallel and asynchronous programming has been influenced by many people, including Simon Peyton-Jones. I've been very grateful for his comments and support."
Others who have supplied invaluable support include Martin Odersky, designer of the functional language Scala and a professor at Ecole Polytechnique Federale de Lausanne, the Swiss Federal Institute of Technology in Lausanne, who hosted a visit by Syme during which key concepts behind F# came into focus; Ralf Herbrich, one of a number of colleagues who have applied F# within Microsoft Research; and Tomas Petrícek, a former Microsoft Research intern and co-author of Real World Functional Programming: With Examples in F# and C#, which Syme terms "one of the best books on applied functional programming."
Syme also emphasizes the importance of Microsoft Research itself in the development of the language.
"Microsoft Research has given F# a long-term home," he says, "which has allowed the language to mature in a context of intellectual curiosity and investigation. It's also given us access to many of the best researchers in the world. The partnership we've developed with the Microsoft Developer Division is something we very much look forward to continuing."
Along the way, the F# effort encountered and surpassed a series of hurdles.
"Combining object-oriented and functional programming poses several challenges," Syme says, "from surface syntax to type inference to design techniques. I'm very proud of how we've addressed those problems. F# also has a feature called 'computation expressions,' and we're particularly happy with the unity we've achieved there."
Now, with F# having been added to the Visual Studio tool kit, it's time for the team to turn to new challenges, right? Not so fast, Syme cautions.
"A recurring theme of F# is its focus on accessing information from outside the language," he states. "Looking ahead, we want to continue to connect F# to rich data sources and external sources of functionality. There is a tendency in the industry to think that strong typing and navigability are necessarily lost around the fringes of an application. In many ways, C# and F# already dispel this myth. However, we have ideas about how to make external access even simpler and more intuitive, continuing to break new ground for typed languages."
Meanwhile, on the product side, it will be interesting, Hoban says, to watch how F# is embraced now that it has received official release as part of Visual Studio 2010.
"We've seen a number of interesting uses across a broad range of software applications," he says. "We're also seeing many examples of F# being used to build components of larger .NET applications. This allows projects to seamlessly integrate F# in areas where it provides significant value without needing to change anything else in their applications."
For Syme, staunch advocate of functional programming and making software development enjoyable, the prospect of people enjoying their work with F# is the ultimate reward.
"That," he says, "makes me happy."