F# - A Functional Programming Language

One of the important themes in programming languages over recent years has been a move to embrace ideas from functional programming.

Language features such as lambda expressions in C# and generics in .NET 2.0 have roots in functional languages, and LINQ is directly based on functional programming techniques. Through LINQ and Parallel FX, ideas from functional languages are helping us address some of the biggest challenges facing the industry today, from the impedance mismatch between data and objects to the challenges of the multi-core and parallel computing space.

Several of these key technologies have started out as projects in Microsoft Research. One of the really promising current projects from MSR is the F# programming language, spearheaded by Don Syme. F# stems from the functional programming tradition (hence the ‘F’) and has strong roots in the ML family of languages, though also draws from C#, LINQ and Haskell. F# is designed from the outset to be a first class citizen on .NET. This means that F# runs on the CLR, embraces object-oriented programming, and has features to ensure a smooth integration with the .NET Framework.

I am a big fan of technology transfer between a research organization and a product development organization so that we can “productize” the great research ideas and deliver to customers in a timely manner. This is one of the best things that has happened at Microsoft ever since we created Microsoft Research over 15 years ago. Here is another great example of technology transfer at work. We will be partnering with Don Syme and others in Microsoft Research to fully integrate the F# language into Visual Studio and continue innovating and evolving F#. In my mind, F# is another first-class programming language on the CLR.

Our interest in F# is motivated by several factors. As I mentioned above, we aim to continue the flow of good ideas from functional programming world into mainstream development. Furthermore, the somewhat mathematical slant of functional programming just seems naturally appealing to professionals whose primary domain is described with mathematical notation - domains such as financial, scientific and technical computing. On top of the syntactic appeal, the strong type system yields the sort of guarantees which are often crucial in these domains, and enables a superb tooling experience through Visual Studio.

Another motivation is to continue to invest in making the .NET Framework a great choice in academia. Many computer science departments around the world teach functional programming languages today. We believe that through F# and languages such as IronPython and IronRuby we can help offer students and educators choices beyond the current mainstream and enable the use of these languages across the curriculum. This helps educators have the option to use Visual Studio as a consistent tool set from course to course.

You can find out more about F# in Don Syme’s blog, and at https://research.microsoft.com/fsharp.

Namaste!

Comments

  • Anonymous
    October 16, 2007
    PingBack from http://www.artofbam.com/wordpress/?p=9494

  • Anonymous
    October 16, 2007
    The F# license still requires me to statically link the F# libraries for any commercial purpose: http://research.microsoft.com/fsharp/fsharp-license.txt Which means, that any F# type, like Tuple<A,B>, will in fact be two different types when you link two F#-compiled assemblies. Not a very workable procedure. If you're serious about making F# a first class .net language, I'd start with a fix to that license. Otherwise, this is fascinating stuff!

  • Anonymous
    October 16, 2007
    Actually, I have tried to play with F# a year (or two?) ago but that wasn't ready to be played with :) Ability to combine .NET imperative languages based projects (for UI and part of the business logic) with functional language based ones lokks bery promising. That would be really great. Does F# allow such combination? Can I for example incapsulate all my scientific calculations logic into F# project and then use its output dll in my C# UI project?

  • Anonymous
    October 16, 2007
    Dmitry: yes. The way ML constructs are mapped to CLR types is pretty clean, with good use of generics.

  • Anonymous
    October 16, 2007
    Thanks for the answer. Will try F# again to create working application in combination with C#.

  • Anonymous
    October 17, 2007
    This looks like Microsoft's solution to Python.

  • Anonymous
    October 17, 2007
    The comment has been removed

  • Anonymous
    October 17, 2007
    Somasegar Announces Productization of F#

  • Anonymous
    October 17, 2007
    Very cool. I&#39;d say the idea of using F# for real projects is getting closer to a pragmatic reality

  • Anonymous
    October 17, 2007
    Finally. I hope that MS embrace the communities of other popular functional languages like Haskell to

  • Anonymous
    October 17, 2007
    The comment has been removed

  • Anonymous
    October 17, 2007
    The comment has been removed

  • Anonymous
    October 17, 2007
    Soma announced some exciting news this morning. Developer Division--the people at Microsoft who make

  • Anonymous
    October 17, 2007
    Soma - Does this mean we will see F# ship with Visual Studio 2008 or Visual Studio 2008+1? Thanks - Jordan

  • Anonymous
    October 17, 2007
    微软Developer Division部负责人 Somasegar 在自己的 blog 上发布了一条关于 F# 产品化的 消息,而Jomo Fisher的另一篇 blog 则披露了更多的 内容。

  • Anonymous
    October 17, 2007
    Today is an exciting day for the F# team. The Corporate VP for the Microsoft Developer Division, S. Somasegar

  • Anonymous
    October 17, 2007
    Soma made an interesting announcement today : F# will become an official Microsoft .NET language (like

  • Anonymous
    October 17, 2007
    @  Anjanesh; you said: "This looks like Microsoft's solution to Python." F# is nothing like Python, it's drastically different - did you jump on that just because it has tuples?  <i>IronPython</i> is Microsoft's solution to Python....

  • Anonymous
    October 17, 2007
    You absolutely can't judge F# by just reading the book. Try to program a decently-sized practical application with it, like I did - you'll get hooked pretty quickly. Congratulations to Don and the rest of the F# team! F# is a productivity gem. I can't wait to see just as good support for F# in Visual Studio as C# currently has.

  • Anonymous
    October 17, 2007
    The comment has been removed

  • Anonymous
    October 17, 2007
    The comment has been removed

  • Anonymous
    October 17, 2007
    You've been kicked (a good thing) - Trackback from DotNetKicks.com

  • Anonymous
    October 17, 2007
    This is great news indeed. Now, if you only created a Haskell compiler for .NET then I would be really ecstatic.

  • Anonymous
    October 17, 2007
    Creo que he aburrido a m&aacute;s de uno con mis entradas hablando sobre programaci&oacute;n funcional

  • Anonymous
    October 17, 2007
    I think I've bored to death more than one acquaintance talking about functional programming , F# , and

  • Anonymous
    October 17, 2007
    Creo que he aburrido a más de uno con mis entradas hablando sobre programación funcional , F# y Haskell

  • Anonymous
    October 17, 2007
    This is really wonderful news. Congrats to Don and all the others. This is really big news for me since it means I'll be able to use (sometimes) functional programming in my contracts gigs - using another ms supported language is a much, much easier pitch than using a language from academia (it may be the case that this is silly, but it's still true). I need to find my copy of "ML for the working programmer" and see what F# books are out there.

  • Anonymous
    October 17, 2007
    F# meets RIA, WPF, XNA, Expression, multi-core,Silverlight, Popfly...? Can't wait.

  • Anonymous
    October 18, 2007
    Some interesting news emerging from the Visual Studio and F# team appears that language appears to moving

  • Anonymous
    October 18, 2007
    Excellent news - actually got the book two days ago. Any ideas on what project templates you'll be create (ASP.NET, Web services, etc...)?

  • Anonymous
    October 18, 2007
    I just saw the announcement on Don and Soma's blogs about the fact that a product team has officially

  • Anonymous
    October 18, 2007
    Back in February I blogged about some of my thoughts on the experimental languages Microsoft Research

  • Anonymous
    October 18, 2007
    F# bude ve Visual Studiu Možná jste v posledních pár dnech zaznamenali, že se na internetu hodně píše

  • Anonymous
    October 18, 2007
    F# bude ve Visual Studiu Možná jste v posledních pár dnech zaznamenali, že se na internetu hodně píše

  • Anonymous
    October 18, 2007
    Back in February I blogged about some of my thoughts on the experimental languages Microsoft Research

  • Anonymous
    October 18, 2007
    Time for another weekly roundup of news that focuses on .NET, agile and general development content:

  • Anonymous
    October 18, 2007
    O Soma, o VP chefe das ferramentas de desenvolvimento anunciou suporte à linguagem “F#”, desenvolvida...

  • Anonymous
    October 19, 2007
    The comment has been removed

  • Anonymous
    October 19, 2007
    I don't see this becoming a serious academic language unless a free version of VS.NET can run it. I don't see academics forking out money for it, no matter how good it is. Not sure, maybe you can run it on the Personal Edition or whatever it's called, but I'm guessing you will be limited in many features?

  • Anonymous
    October 20, 2007
    I agree with the last comment by Steve P - having a free (somehow limited) version of F# in Visual Studio is a must have. Many people who consider using F# (currently) don't have access to VS, so something like "Visual Studio Express for F#" would be fantastic! Thanks, Tomas

  • Anonymous
    October 21, 2007
    de-commoditization has been happening since MS pushed VB and caused a mass headache to C++ and encouraged script+typeless chaos. And even the work of 1998 when you all stood up to Bill with his infamous response 'heard of Windows?', it still has pretty awful results. People doing VB.NET asking for C# version while IL constructs are already available and a full-fidelity conversion back and forth is a matter of downloading a popular tool speaks volumes doesn't it? Good luck to Cambridge people anyway.. they deserve all the support (and don't even plan to release it without Dr.Harrops libraries included in source, otherwise you know Sony and PS3 people will do the business before you know it :-)

  • Anonymous
    October 22, 2007
    This announcement is great news because, in addition to Generics & LINQ, gives further credibility to the FP community.  Kudos to Don Syme and his team for being so persistent & innovative all these years! For me the major issue in productizing F# is picking the area of specialization in which we can really make a difference considering the fact also that C# 3.0 & VB9 are just around the corner. Is it scientific computing & visualization as some early uses imply? Is it in metadata processing & theorem proving, an area in which SML itself started its life (the modern incarnation of which nowadays would be rdf/owl processing)? Is it as a novel approach to UI development such as reactive programming? Is it as a low overhead platform for Domain Specific embedded Languages development? Is it as a testbed for developing parallel algorithms for both synchronous (i.e. PLinq) and asynchronous scenarios? Or is it  as a general purpose business rules & workflow development platform? The answers that the community/F# team gives to questions such as the above would clearly provide steering wrt the language constructs that need to be frozen in the final product. Tooling will also need a fresh approach, i.e. mapping algebraic types to relational dbs is not covered by ORM techniques. I am intrigued with the possibilities... Dimitris

  • Anonymous
    October 22, 2007
    Yippee.  <yawn> Another gadget language.  You can dedicate resources to F# to make it a "first class citizen on .Net", but C++/CLI gets secondary attention.  Sounds like my suspicions of anti C++ bias were well-founded. Oh, and please stop with the poor analogies.  A programming language is not analogous to a hammer.  It's more like a tool chest or workshop.  Now, how many carpenters want to use different workshops - with different tools stored in different places - every time they start a new job?  And, add to that, how many want to be working on a job and have to switch back-and-forth between jobs workshops while trying to finish each job in a timely manner? Why don't you spend time on the gadgets after you've finished with the important stuff?

  • Anonymous
    October 22, 2007
    F# is an official .NET language now , posted on Channel8 Soma had the news today. F# is an official .NET

  • Anonymous
    October 22, 2007
    Resumo da Semana - 22/10/07

  • Anonymous
    October 22, 2007
    You're savvy in the ways of C#. You know the .NET Framework like the back of your hand. Or do you? Just

  • Anonymous
    October 23, 2007
    Somasegar in questo post della scorsa settimana pubblicizza F# e lo pensa come un lingaggio di prima

  • Anonymous
    October 23, 2007
    Microsoft plans to integrate F#, a functional programming language developed by the Microsoft Research

  • Anonymous
    October 23, 2007
    Ευχάριστα νέα για το μέλλον της F#, μας έρχονται από το στρατόπεδο της MS! http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx

  • Anonymous
    October 23, 2007
    The Visual Studio team at Microsoft is saying (see here http://blogs.msdn.com/somasegar/archive/2007/10/17/f-a-functional-programming-language.aspx

  • Anonymous
    October 23, 2007
    With the latest news about baking F# into Visual Studio I figured re-solving the problems from Project Euler would be a great way to learn F# and hopefully come up with cleaner solutions. This post will go over my solution for problem 1 in F#.

  • Anonymous
    October 23, 2007
    Leggo solo ora sul blog di Soma un post del 17 ottobre dove viene spiegato che c&#39;&amp;#xE8; l&#39;intenzione

  • Anonymous
    October 23, 2007
    I agree that F# should not be judged by the first book about it, "Foundations of F#", which was very hard to read -- I was probably too generous to give it 3 stars on Amazon.  Fortunately, this announcement means better books will come.  And:  Don Syme's book, which looks to be quite good, is expected next month.

  • Anonymous
    October 23, 2007
    Microsoft has announced that support for the F# functional programming language will be fully integrated

  • Anonymous
    October 23, 2007
    Like lots of other netizens, far too much information passes across my virtual desk in a day. With blogs,...

  • Anonymous
    October 23, 2007
    Me he atrevido por fin a instalar el lenguaje de programación F#, similar a Caml e inspirado en OCaml

  • Anonymous
    October 23, 2007
    Intro: F# (BTW : F is for functional) is &quot;Combining the efficiency, scripting, strong typing and

  • Anonymous
    October 24, 2007
    The comment has been removed

  • Anonymous
    October 25, 2007
    Getting ready to spend a full 7 days in Redmond starting Saturday and meanwhile trying to bring on two

  • Anonymous
    October 25, 2007
    Olá pessoal, tudo certo? Apenas para sair um pouco do tema SOA, WEB 2.0 e SAAS, um post no estilo Otávio

  • Anonymous
    October 26, 2007
    Soma blogged earlier announcing our intent to productize F#, and we are seeing some press coverage of

  • Anonymous
    October 26, 2007
    I've been playing around with F# for a little while, but I hadn't gotten my hopes up that it'd end up

  • Anonymous
    October 27, 2007
    Hace dos años, tuve el gusto de dar una charla con Martín Salías , en Microsoft de Argentina, sobre lenguajes

  • Anonymous
    October 29, 2007
    F#, le petit nouveau des langages .NET Microsoft Blog de Soma ( annonce de F# ) Nouveau pas vraiment,

  • Anonymous
    October 30, 2007
    The week of OOPSLA is now over and life has now returned to its regular path. Some notes from last week's...

  • Anonymous
    October 31, 2007
    Poche settimane fa ho citato un post su una caratteristica di F# che è interessante anche se non si è

  • Anonymous
    November 02, 2007
    Its nice to see another addition to the library... Just got it downloaded and about to explore the feature... I'm sure there is a lot of fun hiding in there...

  • Anonymous
    November 05, 2007
    I love ocaml and when I saw F#, I loved the idea. What about speed? Ocaml is very fast language. What about F#?

  • Anonymous
    November 06, 2007
    I've just arrived in Barcelona, for TechEd Developers. What an event! First, on the product side, there

  • Anonymous
    November 06, 2007
    F# (pronounced "F sharp") is a functional programming language developed at Microsoft Research that targets

  • Anonymous
    November 06, 2007
    F# (pronounced &quot;F sharp&quot;) is a functional programming language developed at Microsoft Research

  • Anonymous
    November 06, 2007
    I&#39;ve just arrived in Barcelona, for TechEd Developers. What an event! First, on the product side

  • Anonymous
    November 14, 2007
    A few weeks back, Soma blogged about an increased investment by the Microsoft Developer Division in the

  • Anonymous
    November 28, 2007
    Recently, I started to re-wire some mildly used parts of my brains to accommodate capabilities for a

  • Anonymous
    November 28, 2007
    Recently, I started to re-wire some mildly used parts of my brains to accommodate capabilities for a

  • Anonymous
    November 28, 2007
    The shift to multi- and many-core processors that is currently underway presents an exciting opportunity

  • Anonymous
    November 29, 2007
    The shift to multi- and many-core processors that is currently underway presents an exciting opportunity

  • Anonymous
    November 29, 2007
    Just tried F# on Visual Studio Team System last night. It ran smoothly... so far. The first thing I tried

  • Anonymous
    December 01, 2007
    Collected from Mahesh Kumar http://cyberiafreak.spaces.live.com/ I. 20 Ways to Come Up With Amazing Ideas

  • Anonymous
    December 07, 2007
    Quisiera comentar hoy algunos recursos en la web sobre el lenguaje F#, implementación de programación

  • Anonymous
    December 11, 2007
    http://blog.joycode.com/soma/archive/2007/12/10/112462.aspx 目前正在发展中的向multicore和manycore处理器的转变,为...

  • Anonymous
    January 12, 2008
    F# es un lenguaje nacido en Microsoft Research, de la mano de Don Syme. Pero no es un lenguaje funcional

  • Anonymous
    February 25, 2008
    Ever since Mattox Beckman introduced to the OCaml language to us lucky enough to be in his "Languages

  • Anonymous
    February 25, 2008
    Ever since Mattox Beckman introduced the OCaml language to those of us lucky enough to be in his &quot;Languages

  • Anonymous
    April 29, 2008
    F# é linguagem funcional, orientada a objetos, anunciada pela Microsoft no final de 2007 e agora integrada

  • Anonymous
    June 23, 2008
    I look forward to learning F# because I last studied structured programming in languages like BASIC, COBOL and C.  Even though I am now attempting to learn and understand the object-oriented "way of things" now with languages like C#, I still have most of my schooling in modular and top-down programming. So, this could be a great opportunity down the road.

  • Anonymous
    July 03, 2008
    F# は、 Microsoft Research が開発した、 OCaml ( Objective Caml )と互換性のある .NET の関数型プログラミング言語です。 C# など他の .NET 言語も相互に呼び出せ、

  • Anonymous
    August 31, 2008
    Se va uno una semanita de vacaciones y montones de cosas pasan. Por ejemplo, Don Syme y compañía han

  • Anonymous
    August 31, 2008
    You leave on vacation for one short week and a lot happens... for example, Don Syme &amp; co. have released

  • Anonymous
    September 02, 2008
    Publicación del inglés original : Martes, 2 de septiembre de 2008 2:07 PM PST por Somasegar El pasado

  • Anonymous
    September 09, 2008
    [原文地址]: F# September 2008 CTP Released [原文发表时间]:Tuesday, September 02, 2008 2:07 PM 去年 10 月, 我在 blog

  • Anonymous
    September 15, 2008
    Microsoft F# September 2008 CTP

  • Anonymous
    September 22, 2008
    Sealevel: if you post everything twice or three times back at home, no wonder you have bored many acquaintances with your stuff :) LOL

  • Anonymous
    October 09, 2008
    Now that F# is being officially productized , I thought it was time I also made it a first class citizen

  • Anonymous
    November 04, 2008
    (This article is based on two articles that I posted about the book to my other blog). If you’ve been...

  • Anonymous
    June 01, 2009
    F#--一种函数式编程语言 [原文地址]:F#-AFunctionalProgrammingLanguage[原文发表时间]:Wednesday,October17,200...

  • Anonymous
    May 30, 2010
    Dear friends, thank you for visiting our website ,we are an international trade company,which specializes in NFL jerseys. <a href= www.cheapnfljerseys4u.com/>Cheap NFL Jerseys China</a>, such as Arizona Cardinal,Atlanda Falcons ,Baltimore Ravens,etc.You can buy cheap jerseys. Welcome to visist here . Website:  www.cheapnfljerseys4u.com

  • Anonymous
    June 20, 2010
    The end of the Article looks a marketing stunt to sell visual studio. If Microsoft is really interested in f# to be language of research ( as well as commercial ) than f# has to be open specification and have open source license.

  • Anonymous
    August 15, 2010
    Hey guys, I hope this allowed, I have never used this website before so I wasn't really sure what this was going to do.  <a href="http://www.nfljerseyse.com" title="wholesale nfl jerseys">wholesale nfl jerseys</a>   So this is just a test post. I really like this forum, it has some excellent discussions that take place.

  • Anonymous
    August 15, 2010
    Thanks.<a href="www.nfljerseyse.com/pittsburgh-steelers-jerseys " title="Pittsburgh Steelers jerseys ">Pittsburgh Steelers jerseys </a>