PDC 2008

An Introduction to Microsoft F#

Download this episode

Download Video

Description

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

Day:

0

Code:

TL11

Embed

Format

Available formats for this video:

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

    The Discussion

    • stevo_
      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

      (hurr!)
    • CbrAInK
      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 Scott
      Appaluse!

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

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

    • gustavo
      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).

      Kudos!
    • mspan

      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 =
              lprices
              |> Seq.map snd
              |> Seq.take days
      static member GetAnalyzers (tickers,days) = 
          tickers
          |> 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 1.9.6.2 version of f# with VS  integrated shell.
      Thanks!
      mspan
      www.fsharpener.blogspot.com

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

      exm.

      let sumOfSquares nums = sum (each nums sqr)

      sumOfSquares [0,2,5,8]
    • hossein.​haeri
      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...
    • krusaint
      Really good presentation. Looking forward for more of F#.
    • seiichirou
      elvistcb: yes there is:
      (define (sum-of-squares nums) (fold-left + (map sqr nums)))
      (sum-of-squares '(0 2 5 8))
    • Xylon
      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.
    • Joiseystud

      Awesome video. 

    • RAJENDER P. REDDY

      Good Presentation!

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

      It's an interessting language like C#.

      Thanks.

      -Raja

      +1 404 424 4674

    • indulge

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

      Thanks,

    • indulge

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

      Thanks

    • sean r

      Superb presentation, thanks.

    • StockTrader

      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

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

    • Zibri

      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

    • JimLewis

      Bravissimo!

    • Rustan

      nice =)

    • Krishna_​Nadiminti

      Excellent talk mate.

    • g

      @birbilis: more compact yes, simpler to understand no

    • Anthony

      Concise and entertaining one-hour intro to F#.
      Excellent 

    • FD

      @birbilis:
      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.

    • Peter

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

    • bewnet

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

    • preets

      Such a relaxed presentation ! Good one Smiley

    • Alomgir A Miah

      This is really an awesome presentation. Thanks

    • Sam

      The best accent I've ever heard! :)

    • Sam

      The best accent I've ever heard! :)

    • Sam

      The best accent I've ever heard! :)

    • Jason

      Excellent presentation!! Informative and comical at the same time

    • Victor

      Hi!
      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

    • Donna​Malayeri

      @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).

    • murph

      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.

    • sm0606

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

      var prices = csv.Split('\n')
      .Skip(1)
      .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 continue the conversation, please create a new thread in our Forums, or Contact Us and let us know.