Loading user information from Channel 9

Something went wrong getting user information from Channel 9

Latest Achievement:

Loading user information from MSDN

Something went wrong getting user information from MSDN

Visual Studio Achievements

Latest Achievement:

Loading Visual Studio Achievements

Something went wrong getting the Visual Studio Achievements

An Introduction to Microsoft F#


Right click “Save as…”

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

Follow the discussion

  • Oops, something didn't work.

    Getting subscription
    Subscribe to this conversation
  • stevo_stevo_ Human after all
    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

  • CKoenigCbrAInK Carsten
    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 !
  • Art ScottArt Scott Semasiograp​hologist

  • Yea, I really enjoyed this presentation . One of best. It gives nice tasting of F#. I recommend this. 
  • George Birbilisbirbilis Microsoft MVP J# 2004-2008, Borland Spirit of Delphi 2001
    regarding the pipeline (|>) operator example: couldn't one just write Seq.sum(Seq.map(nums,sqr) and get done with it?
  • yswysw

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

  • Gustavo Keenergustavo Me
    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).

  • 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 =
            |> Seq.map snd
            |> Seq.take days
    static member GetAnalyzers (tickers,days) = 
        |> Seq.map loadPrices
        |> Seq.map (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.

  • 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]
  • 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...
  • Really good presentation. Looking forward for more of F#.
  • elvistcb: yes there is:
    (define (sum-of-squares nums) (fold-left + (map sqr nums)))
    (sum-of-squares '(0 2 5 8))
  • 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.
  • Awesome video. 

  • Good Presentation!

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

    It's an interessting language like C#.



    +1 404 424 4674

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


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


  • Superb presentation, thanks.

  • 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

  • Koistya `Navinkoistya RIA Guy | Koistya `Navin

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

  • ZibriZibri

    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

  • Bravissimo!

  • RustanRustan

    nice =)

  • Excellent talk mate.

  • gg

    @birbilis: more compact yes, simpler to understand no

  • AnthonyAnthony

    Concise and entertaining one-hour intro to F#.

  • FDFD

    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.

  • PeterPeter

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

  • bewnetbewnet

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

  • Such a relaxed presentation ! Good one Smiley

  • Alomgir A MiahAlomgir A Miah

    This is really an awesome presentation. Thanks

  • SamSam

    The best accent I've ever heard! :)

  • SamSam

    The best accent I've ever heard! :)

  • SamSam

    The best accent I've ever heard! :)

  • JasonJason

    Excellent presentation!! Informative and comical at the same time

  • VictorVictor

    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!

  • @Victor: thanks for your interest!  The best place to ask these questions is over at the MSDN F# forum (http://social.msdn.microsoft.com/Forums/en-US/fsharpgeneral/threads). 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 (http://blogs.msdn.com/b/fsharpteam/archive/2011/04/15/getting-started-with-fsharpchart.aspx).

  • murphmurph

    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.

  • sm0606sm0606

    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] });

Remove this comment

Remove this thread


Comments closed

Comments have been closed since this content was published more than 30 days ago, but if you'd like to continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.