Thanks to the wonderful world of the web, we’re able to trace the genealogy of F# back a few generations. Here’s what we found:
- At the heart of F# lies Objective Caml, or OCaml, and the .NET language C#.
- C#, as you probably already know, is based upon C/C++ and Java.
- OCaml is the latest incarnation of the Caml language.
- Caml is a dialect of ML.
Did I lose you? Well, I almost lost me. So, let’s leave it at this: F# is, in essence, another dialect, or “manifestation” as Microsoft calls it, of a functional ML-like language mixed with the power of C#.
What is ML?
ML is a functional language (similar to Scheme, as we discussed above) created about 20 years ago, primarily for research. ML is short for “meta-language”, and as the name implies ML is primarily used to manipulate other languages. So a compiler, for example, is a great application to write using ML.
Don’t expect to find any job postings for ML programmers, because it’s not a widely used professional language. However, it’s a fascinating language to learn–and if you’ve never worked with a functional language I highly recommend spending some time with either ML or Scheme.
ML creates an entirely different development environment, including interactive compilers that respond as you code. A very different mode of thinking is required to code in a functional language. Now, it’s not LSD for developers, but in my opinion it’s fairly mind-blowing.
Now, I won’t lie–as far as functional languages go, I’m more familiar with Lisp (and Scheme specifically) and my experience with ML lies mostly in classrooms. So, chime in at the forum if you have some thoughts on ML.