F# History – Why Was F# Created?

%fhistory

For my current class, I have to pick and research a Programming Language (or popular scripting language) and answer quite a few questions about it, write a paper, and do some example programs displaying it's strengths and weaknesses compared to other languages.

I'm currently looking into F# as a possible candidate, my problem is I can't find any information stating (at least explicitly) why F# was created. I've found many strengths and a few weaknesses of F# but do these necessarily imply reasons as to why it was created?

Does anyone know any links or reads that would explicitly state why F# was created and/or the history of F# (particularly things like, what the creator was thinking, and stuff like that)?
And yes, I've been searching and will continue to, I just can only find implicit reasons, and I was hoping to find something stating explicitly reasons why F# was created.

Best Answer

When .net originally came out it was supposed to be a platform that any language could run on top of, so there was a strong push by MS to port a large number of different types of languages to the .net platform. You had microsoft contributing heavily if a project organically sprung up like ironpython, and if none did MS wrote it themselves. F# started as a port of OCaml to the .net framework to cover the strongly typed functional language spot that had no organic project.

Just in case the Don Syme link ever dies here is the main take away from it:

"The visional design of the .NET platform was very much expected to be a multilanguage platform from the start. Right back in 1998, just in fact as our research group in programming languages started at Microsoft and I joined the team and then other 10 of us joined the team, we were approached by a guy called James Plamondon, who started the project called Project 7, which was about getting 7 academic and 7 industrial programming languages on each side to target the .NET common language runtime and really check out if it was good enough, to see if design changes could be made early on in the design process of .NET to make sure it was good enough for a range of programming languages."

and a little further down

"I took what I learned from .NET Generics and saw that there was a chance to do a ML like language fitted very closely with .NET. During this time we had a go doing Haskell for .NET, we actually got a long way in doing that, but in the end there is quite a lot of dissonance between Haskell and .NET."