In 2 hours I'm flying off to TechFest 2007 in Redmond. This really is one of the highlights of the year for me - an astounding trade show of some of the best the computer research world has to offer. James Margetson, myself and other members of the F# community will be presenting a booth on F#, highlighting how the language has both matured to be an incredibly useful tool and how it is also acting as a vehicle for innovative applied functional programming research.

In the lead up to TechFest we've been putting the finishing touches on F# 1.9, We're upping the version number because this is the first in a cycle of releases leading toward F# 2.0, which we plan to release in the second half of the year.  Here are some of the highlights of what will be in the next release:

  • Active Patterns.  Active patterns give a form of extensible pattern matching on abstract values. F# active patterns allow you to pattern match against .NET object values such as XML, System.Type values and LINQ Expression trees. In this redesigned version they become an official part of the language and some novel additions give a lightweight and non-intrusive mechanism to both partial patterns, parameterized patterns and "complete" decompositions (views) of types.
  • Implicit Class Construction.  This lovely feature makes writing classes considerably more succinct and helps to further bridge the gap between type-inferred functional programming and object-oriented programming.
  • Simpler Quotation Library.  The F# Quotation library has been redesigned to use active patterns and to have a much simpler model of types, and as such is now much more powerful.  F# Quotations are used to interoperate with LINQ, Accelerator and other meta-programming components.
  • Methods as first-class values.  You can now use .NET methods as functions in many situations, e.g. "map File.ReadAllLines ["a.txt"; "b.txt"]"
  • Attributes for C Interoperability.  StructLayout, FieldLayout etc. now supported
  • Better IntelliSense.  IntelliSense on more expressions, more information in ToolTips.
  • Syntactic improvements, Bug fixes, Library additions and much more.  A whole bunch of things here - more detail will be in the release notes. 

So, time to fly, and soon after we land we'll be posting the next release. (Update: actually it's taken us a little longer - see later posts!)