F# 1.1 Released
Dr. Don Syme and his good group at Microsoft Research have released F# 1.1.0.4 (with pre-release notes here). Way to go guys. While I have a copy of this software, I haven't had a chance to work with this release yet. I currently am using 1.0.8.6 and expect to upgrade a few VPCs to 1.1.0.4. I didn't get a chance to do this over the weekend as I had hoped, but I have looked at the docs and samples. For those that don't know of Dr. Syme, he was, among many other things, an early champion of the Generics that we now see in C# 2.0. His list of accomplishments is long and as I cannot do this list justice, take a moment to look at what he has on his home page.
I'm a math guy that programs (or maybe vice-versa), but it took Marty to point me in the direction of F#. I had heard of F# some time ago, but had mistakenly thought that it was the replacement for Fortran in Microsoft's suite of developer products. Silly me. Marty mentioned it about 8 weeks ago or so and I have been hooked ever since.
Given that GAI.NET is way behind schedule for release, I'll not make any promises here. I hope to release some community projects on F# in the coming months, but I'll leave it at that for now.
I do considerable math work in .NET and other mathematics software packages, so I'm optimistic about F#. The language has the feel and syntax of ML and Ocaml. Dr. Syme and his team have added significant functional programming features to the language in this release as well. While I don't like to prognosticate on these matters, I do see that the ability to use a rich language that is mathematics friendly will be critical for the .NET practitioner when doing numerical analysis, scientific computing or other similar disciplines. The fact that this is "pure .NET", i.e. it is interoperable with all of the other .NET languages, and is compiled means that over time, I can invest in F# without concern for loss in value of my time. As F# is still a research language, this will be over a long period of time, but I can at least start the planning and proof-of-concept on my mathematics infrastructure. Given that the most expensive cost in a typical infrastructure is the "shuttling" of data amongst the computation engines, I expect that I can take a more comprehensive approach to dealing with data. I mentioned to Scott C. Reynolds (I'm working on that name thing, I need more material) recently in a comment here that I am planning for C# 3.0. This is precisely how I think about these problems, given that C# will make use of support for data in the language. Using discriminated unions in F# also improves much of my ability to deal with these issues as well. My toolbox just got a lot bigger.
One other feature that is crucial to what I do is "big integers and arbitrary sized rational arithmetic". I do a considerable amount of Number Theory and had to move to other platforms to get this functionality. SCORE A BIG PLUS FOR THE F# GUYS ON THIS FEATURE. As time progresses and this language matures, I'd suspect that many of the features that are available in other environments such as Maple, S+, MatLab and Mathematica will be core/standard features of this language. The features that are not placed in the language will likely be simple to implement. This means that Graph Theory, Algorithmic Number Theory, Cryptanalysis, Cryptography, Genetic Programming (GP on steroids in F# is an understatement), Emergent Computation and other assorted work have a new place to live at JJBR and The House of Scalper. I get all of the benefits of the .NET runtime environment with distributed computing, etc. as well.
So, to Dr. Don Syme and his hard-working team, I salute the work that you do to further this language. It is sincerely appreciated.