F# Webcast (I.) - Introducing functional concepts
Now that Visual Studio 2010 Beta 1 [^] is out, it is finally a good time to take a look at one of the (in my opinion) most interesting new features in the new release - the F# language [^]. F# existed for quite a long time now as Microsoft Research project, but is now becoming a real Microsoft product. Interestingly, F# is still available as a plugin for Visual Studio 2008 [^], so if you want to try it you don't have to install the whole new beta of 2010.
There are already many resources for learning F# including my functional programming overview, which is a Manning Greenpaper for the book Functional Programming for the Real World [^] that I'm writing with Jon Skeet and my four-part F# introduction. There are also some useful links on the official F# web site including some talk recordings. However, I haven't yet seen any good F# webcast focusing mainly on showing F# source code, starting from simple functional concepts to the real-world features like asynchronous workflows and object-oriented programming in F#, so I decided to create one.
So, here it is! It is my first webcast and I'll be grateful for any feedback, comments and ideas!
What's next?
This webcast is the first part of four that I'm planning. It follows the usual F# development process where you start with experimenting and writing an initial version of the solution interactively using the F# interactive tool. In the later phase of the process, we modify the code to make it parallel and asynchronous and finally, we can also encapsulate it into a standard .NET library that's usable from C#. The first part of the webcast introduces some basic functional ideas and F# concepts, but then we'll look at simple real-world example - we'll look how to download RSS feeds from the internet, process it in F# to find posts that are interesting for us and we'll use this F# library from C# web application. Here is a list of all webcasts in the series:
- Part I. - Introducing functional concepts
The first part introduces functional programming principles such as immutability, recursion and functions that take other functions as parameter (higher order functions). This can all be demonstrated in C# 3.0, so we start with C# and then look how the same concepts look in F#. Finally, the first part also shows functions for working with lists in F#. - Part II. - Using standard .NET libraries
The second part demonstrates how we can use standard .NET libraries. It uses classes fromSystem.NetandSystem.Xmlto download content of a web page (RSS feed), load it into XML document and process it to find only posts that contain some specified keyword. - Part III. - Downloading web pages asynchronously
The third part shows how to make the code from the part II. better. It introduces F# asynchronous workflows that can be used for writing code that doesn't block a thread when waiting for the completion of some I/O request. This part also shows how to modify the code to download and process multiple feeds in parallel. - Part IV. - Developing standard .NET libraries
In the fourth part, we look how to encapsulate the functionality written in F# into classes. We'll finally create a project (rather than just use F# scripts) and we'll wrap the code we wrote into a .NET class. We'll also look how to compile the project into DLL and how to use it from a simple C# web application.
Downloads
- Source code from the WebCast (ZIP)
- Download the video (WMV format, 21MB)
- Microsoft Visual Studio 2010 First Look [^] - Microsoft.Com
- Visual Studio 2010 Beta1 with F# is now available, plus matching F# CTP Update for VS2008 [^] - Don Syme's WebLog
- F# May CTP for Visual Studio 2008 [^] - Microsoft Downloads
Published: May 25, 2009 13:39
Tags: F# and MSR | Functional Programming in .NET
Bookmarks: FaceBook |
- RE: F# Webcast: Introducing functional concepts by Ben (5/26/2009 12:45:13 PM)
I LOOOOOOOOVEE this webcast.
I know most of this stuff already - but I had to work it out by myself.
This presentation is just at the right baud rate for my brain, and it slips in effortlessly. Get those other ones coming soon please!
(Off to find a colleague to share this with...) - RE: F# Webcast: Introducing functional concepts by Tomas (5/27/2009 4:15:30 AM)
Hey Ben, thank you very much for an encouraging comment!
- RE: F# Webcast: Introducing functional concepts by Dave Berk (5/27/2009 12:44:59 PM)
I already know this stuff from reading your book, but thanks for making it available free. We need more tutorials such as this out to increase F# awareness.
- RE: F# Webcast: Introducing functional concepts by Ben (5/28/2009 7:58:55 AM)
Hey, "Super smart college kid" :)
http://channel9.msdn.com/posts/Charles/Luke-Hoban-Latest-version-of-F-Released-Whats-the-story-Whats-next/ (round about the 9min mark) - RE: F# Webcast: Introducing functional concepts by Tomas (5/28/2009 4:11:10 PM)
Ben: Hehe, yeah, I've seen that video - not sure if I would describe myself like that :-). Also, technically speaking, I'm probably a graduate student now (doing Masters degree), but I'm not quite sure how the terminology maps between US and continental Europe education systems.
- RE: F# Webcast: Introducing functional concepts by Felipe Lima (6/1/2009 4:38:09 PM)
Hey Tomas!
Great work. Thanks for making up these great webcasts. I'm new to F# so I'm learning a lot with it.
Felipe - RE: F# Webcast (I.) - Introducing functional concepts by Aleksei VK (6/16/2009 10:33:19 AM)
Thomas, this webcast is great!!! Thank you very much!
- RE: F# Webcast (I.) - Introducing functional concepts by Thibaut Barrère (6/17/2009 1:13:01 PM)
Thanks for this series - it's excellent.
- RE: F# Webcast (I.) - Introducing functional concepts by Gregg Cleland (6/19/2009 10:13:00 AM)
Thomas,
Thanks for this. You've got a really good rhythm to your explanations, and for new stuff like in F# that sure helps. I love the simple expressions in F#. It sure makes traditional C# seem extremely verbose.
- RE: F# Webcast (I.) - Introducing functional concepts by Anders (7/6/2009 2:37:03 PM)
Thanks for this Video, finally i understand what functional programming is about, you talk and show in a very good speed and very structure way.
Best regards
Anders - RE: F# Webcast (I.) - Introducing functional concepts by Ankur (8/21/2009 5:36:57 PM)
Great Work Tomas, You have done an extremely nice job. Love all your webcasts. If you remember i joined your Phlanger project on codeplex almost 2 years back , unfortunately was never able to contribute as been crazily busy at my work most of the time. Anyways I been trying to gain some quick understanding about some basic concepts in F# for long but nothing available on internet who teaches as good as you with proper explanations. Please keep your webcasts going. I am aure we all would love to see more and even more of these webcasts. BTW i have pre-ordered your book on amazon, looking forward to it immensely.
Good Luck,
ankur - RE: F# Webcast (I.) - Introducing functional concepts by Fred (9/26/2009 9:01:22 PM)
Thanks for the great job. It really helps!
- RE: F# Webcast (I.) - Introducing functional concepts by (10/11/2009 1:39:52 AM)
Is the wmv download corrupted in some way? I've downloaded all 4 episodes, and this first one is the only one that does not allow seeking in windows media player. VLC auto-closes this file if you try to seek past the 21:00 range.
- RE: F# Webcast (I.) - Introducing functional concepts by Tomas (10/15/2009 11:57:56 PM)
Regarding the corrupted VMW file - I belive it should work fine, but there are occasionally some troubles with the servers. Downloading the file again (perhaps after claning the cache) could help.
- RE: F# Webcast (I.) - Introducing functional concepts by Ice Lee (11/22/2009 9:27:11 AM)
Very good presentation of F#. Could you help explain the the benefit of functional program which compare with the objctive program?
- RE: F# Webcast (I.) - Introducing functional concepts by Ice Lee (11/22/2009 9:28:00 AM)
Very good presentation of F#. Could you help explain the the benefit of functional program which compare with the objctive program?
Send comments to this article
Hyperlinks are detected automatically and you can use **bold** and __italic__ to format your comment. If you're here for the first time, I'd like to make sure that you're human. I'm using Asirra, which is a great project from Microsoft Research. If you check 'Remember me' it won't ask again!


