For the last few days I have been playing around with an early release of F#. F# looks like it might be a .Net language that I can stand! The alpha-geeks at Microsoft Research have convinced their corporate masters that the world needs a functional programming language that can be compiled and executed as efficiently as traditional imperative and object oriented languages.
As a long time user of interpreted functional programming languages I can only say: it’s about freaking time!
F# appeals to me for a number of reasons:
- I am familiar with many of the concepts of functional programming. Coming from the APL world I have been using many of these ideas for decades.
- F# can use .Net facilities. It can call, and be called, by any of the .Net languages. Lack of deep supported integration with host facilities has always hurt languages like J. You pretty much have to roll your own for everything.
- F# can be compiled to virtual machine code just like C#. APL, J, K and others do not compile well. Heroic attempts have been made to compile APL and similar languages but sometimes heroes fail.
- F# supports asynchronous and parallel programming. The typical computer these days has two, four, eight or more processors. In the very near future your grandmother’s PC will have eight or more 64 bit processors and perhaps hundreds of gigabytes of real, (not virtual), memory. Programming such machines with conventional languages and tools will be, as one blogger noted, insanely complicated. F# may provide a means to focus the power of such machines without sweating blood.