An Introduction to Microsoft F#

Download this episode

Download Video


Learn about Microsoft's new language, F#, a typed functional programming language for the Microsoft .NET Framework. F# combines functional programming with the runtime support, libraries, tools, and object model of .NET. Understand how F# asynchronous workflows help tame the complexity of parallel and asynchronous I/O programming and how to use F# in conjunction with tools such as Parallel Extensions for .NET.
  • Luca Bolognese







Available formats for this video:

Actual format may change based on video formats available and browser capability.

    The Discussion

    • User profile image
      This is really really cool, exactly what I've wanted to see in regards to F#.. I've seen so many little examples that really didn't help me envisage using this every day..

      let the |> fun commence

    • User profile image
      Wow - this the best show I've seen here so far - it even outperforms "don't fear the monads" Smiley
      Hope to see more of this stuff around.

      Thanks for the fun !
    • User profile image
      Art Scott

    • User profile image
      Yea, I really enjoyed this presentation . One of best. It gives nice tasting of F#. I recommend this. 
    • User profile image
      regarding the pipeline (|>) operator example: couldn't one just write Seq.sum(,sqr) and get done with it?
    • User profile image

      |> is like . (dot) in C# - especially when talking about extension methods.

    • User profile image
      Thank you so much.  So much F# in so little time.  I've already had some fun with this language, and your presentation helps me to understand how to solve some practical business problems (like I do with C# and VB.NET, presently).

    • User profile image

      Great Presentation!
      I am watchin git for the second time and coding along through the demo. However,  I am getting an error in the StockAnalyzer type... 

      type StockAnalyzer (lprices, days) =

      let prices =
              |> snd
              |> Seq.take days
      static member GetAnalyzers (tickers,days) = 
          |> loadPrices
          |> (fun prices -> new StockAnalyzer (prices, days))
      member s.Return = 
          let lastPrice = prices |> Seq.nth 0
          let startPrice = prices |> Seq.nth (days - 1)    
          lastPrice / startPrice -1.

      ... the last line is not working ... getting "This value is not a function and cannot be applied" error when mouseover startPrice variable. Any advice for f# newbie? I am running the version of f# with VS  integrated shell.

    • User profile image
      Isn't something like this more succinct but just as expressive without losing the declarative nature?


      let sumOfSquares nums = sum (each nums sqr)

      sumOfSquares [0,2,5,8]
    • User profile image
      Very great presentation. Thanks Luca. Smiley

      The async stuff didn't work for me. In fact, neither AsyncGetResponse nor AsyncReadToEnd exist in my version (.Net 3.5 under MSVS2008). The Plot function of Graphics is also not available. Seems to me like a special library is needed...
    • User profile image
      Really good presentation. Looking forward for more of F#.
    • User profile image
      elvistcb: yes there is:
      (define (sum-of-squares nums) (fold-left + (map sqr nums)))
      (sum-of-squares '(0 2 5 8))
    • User profile image
      This is the best presentation I've ever seen come out of MSFT! Congrats. As a fresh CS grad, I've heard academic whispering about functional programming but have never had the opportunity nor took the initiative to dig any deeper and learn it for myself. I'm excited that a pragmatic, .NET interoperable, first-class functional language is on the way from Microsoft. Great work guys! After 20-odd years following the computer industry I've never been happier with Microsoft. F# (and Oslo) show that Microsoft is not being complacent. And after Apple's all-style-no-substance "I'm a Mac; I'm a PC" campaign I even find myself rooting for MSFT. But I'm rambling in short great work on F# and a great introductory presentation with a sprinkling of humour Smiley.
    • User profile image

      Awesome video. 

    • User profile image

      Good Presentation!

      After the presentation, I had some fun with this F#. 

      It's an interessting language like C#.



      +1 404 424 4674

    • User profile image

      In regard to the examples, can you share the C# utilities and .dll files? 


    • User profile image

      Can you post the code files used in the demo/talk?


    • User profile image
      sean r

      Superb presentation, thanks.

    • User profile image

      Hello Luca,


      this video is fantastic!! Very intetresting. This F# remembers me the time when I was studing ML.

      Seems very very promising.

       Saluti da Reading - UK

       Marcco -- StockTrader

    • User profile image

      This is one of the greatest presentations. Thanks Luca, you're damn good)

    • User profile image

      Non capisco una cosa: lavori in Microsoft e mi sembri una persona in gamba, perche' non fai un bel corso di pronuncia inglese? Neanche nei film gli italiani parlano inglese in quel modo! :)
      I don't understand one thing: you are a Microsoft employee and yet you don't know how to pronounce english? Not even in movies italians pronounce english that way! :D

    • User profile image


    • User profile image

      nice =)

    • User profile image

      Excellent talk mate.

    • User profile image

      @birbilis: more compact yes, simpler to understand no

    • User profile image

      Concise and entertaining one-hour intro to F#.

    • User profile image

      Pipelining functions with classical C-Syntax gets messy when you have many functions with many parameters.
      Syntax itself changes the way you percieve programming -- it does indeed matter. If you use C# with and without LINQ, you notice how massive the difference between a functional approach and a sequential/imperative approach can be.
      I'm a big fan of the new functional features emerging in .NET, and this takes it a step further.

    • User profile image

      @Zibri:I am American and had no trouble understanding him.  His English is excellent.  Very nice video!

    • User profile image

      What an amayzing presentation!
      Teachs a lot! And the examples are practical application than to play with list of numbers and characters.

    • User profile image

      Such a relaxed presentation ! Good one Smiley

    • User profile image
      Alomgir A Miah

      This is really an awesome presentation. Thanks

    • User profile image

      The best accent I've ever heard! :)

    • User profile image

      The best accent I've ever heard! :)

    • User profile image

      The best accent I've ever heard! :)

    • User profile image

      Excellent presentation!! Informative and comical at the same time

    • User profile image

      I entered the same code as in 38:11 but when I type "grid prices;;", I get "C:\Users\Victor\AppData\Local\Temp\stdin (4,1): error FS0039: The value or constructor ' grid ' is not defined"
      How can I solve the problem. Thanks for your reply!
      Great video by the way!

    • User profile image

      @Victor: thanks for your interest!  The best place to ask these questions is over at the MSDN F# forum ( The short answer to your question is that Luca had already defined "grid" in his project. If you want to use these sorts of charting features in your F# programs, check out this blog post (

    • User profile image

      Great presentation. Shame it wasn't helped with some of the sad attempts at gotcha questions at the end. The biggest problem with this industry is the type who just want to demonstrate to them how 'smart' they are.

    • User profile image

      The code for getting the prices in C# using LINQ. It's kind of the same and little shorter.

      var prices = csv.Split('\n')
      .Select(line => line.Split(','))
      .Where(values => values.Length == 7)
      .Select(values => new { Date = DateTime.Parse(values[0]), Price = values[6] });

    Comments closed

    Comments have been closed since this content was published more than 30 days ago, but if you'd like to send us feedback you can Contact Us.