Ralf, Phil and Thore in the MSR Cambridge Applied Games Group have been continuing their work using F# in conjunction with the XBox Live team. Ralf amazes me with the ease with which he switches between sophisticated probabilistic modelling to writing stored procedures in C#, then back to F# Interactive to crank out another great tool or algorithm. They use F# Interactive to test and script their algorithms interactively, and they deliver the programs to the Xbox Live team as a standalone binaries.
Ralf is very keen to get across how they work with F#, since the techniques are very general and reusable. For example, he describes how powerful IEnumerable is in conjunction with F# Interactive: they can develop their algorithms using IEnumerables set up to read their entire data set, a whopping 1TB in total to process, but easily use IEnumerable combinators to map, fold, filter and truncate the streams. To me that’s a natural consequence of the beauty of functional programming on top of a platform like .NET. But that’s the real joy of programming languages: taking the tedium out of complex transformations and analyses, and developing a simple set of compositional primitives that work together.
Do you know why TrueSkill lets you play with your friends not against them, or have you heard about Mykel Kochenderfer’s Rewad Driven Racing in Project Gotham 3?