Sunday, October 04, 2009 9:57 PM
F# Discoveries This Week 10/04/2009
I’m back from my three week vacation and am just about buried in fascinating functional programming links. I’ve managed to get through most of them and have selected the best of these for this very special welcome back edition of Discoveries This Week.
“Functional languages have been under academic development for over 25 years, and remain fertile ground for programming language research. Recently, however, developers in industrial, governmental, and open-source projects have begun to use functional programming successfully in practical applications. In these settings, functional programming has often provided dramatic leverage, including whole new ways of thinking about the original problem.”
“Unified collection of Monads (M, unit, *) implemented in the Microsoft F# Language.”
Implemented so far: Identity, Maybe, State and List with many more to come. The project lead is actively looking for help.
“Fortunately, this inefficiency can be overcome by using Just-In-Time (JIT) compilation instead of static compilation and partially specializing polymorphism away before JIT compilation. This is the intended design for polymorphism in HLVM and the inspiration was drawn from Microsoft's excellent implementation of the CLR.
Consequently, the equivalent F# program is 100× faster than the OCaml.”
This JIT optimization speed enhancement is astounding by any measure.
“This white paper introduces the F# programming language in the context of technical computing, and demonstrates how F# can be used for both shared-memory parallel programming using the Task Parallel Library, and distributed parallel programming using a Windows HPC Server 2008-based cluster and the Message Passing Interface (MPI).”
Matthew Podwysocki’s Generically Constraining F# Pars One, Two and Three
“Generic constraints inside .NET has always been a fun enterprise, especially given how C# handles them There has been some discussion on Jon Skeet’s blog about the fact that C# does not allow for generic constraints referring to a number of types. […] However, as Jon correctly points out, this is indeed supported by the CLR directly. In fact, with our knowledge of F# constraints, we can write this exact function in F# without any such issue.”