Over the past two weeks a new language has emerged out of Microsoft Research. The language is called F# and it is a derivative of the functional programming language ML (kinda like Scheme). Anyway, the language is certainly just in the research/alpha phase and it is unclear whether it would ever be productized but it is interesting none-the-less.
As identified on the c2.com wiki, an ML based language essentially supports four key features:
- automatic TypeInference such that the compiler creates the types for you.
- mostly declarative syntax using PatternMatching
- GenericTypes (somewhat like C++'s templates)
- Parametrized modules, modules can take other modules as an argument
Another interesting feature relates to its ability to perform data transformations. In traditional procedural languages the process for transforming a collection of objects required iterating through the collection and performing an operation on each one. In F# you would instead pass the collection of objects and the transformation (perhaps a collection of transformations) you wish to perform to a "MAP" function that would handle the transformation(s) on the entire collection in one swell foop. (See What's the Purpose of F#.)
I think the emergence of this language from Microsoft is not as much because there is a need for a new language as the identification that there were no functional programming languages running on top of the .NET platform and in order to prove out that .NET truly could be language agnostic it would make sense to test that eve a functional programming language could be developed on top of the platform.
For the vast majority of cases at Itron I believe F# can be ignored however there are some scenarios, such as perhaps the Universal Calculation Engine, that it could be quite relevant especially if transformations are defined at run time rather than compile time.
2:45:53 PM
|