Real-World F# Articles on MSDN
More than a year ago, Mike Stephens from Manning (who was also behind my Real-World Functional Programming book) asked me if I'd be interested in collaborating on a project for MSDN. The idea was to collaborate with Microsoft on creating some additional content for the official F# Documentation.
A few days ago, the new content appeared on MSDN, so I finally have an excuse for the recent lack of blogging! Although the content contains a large number of new articles that are not based on my book, you can find it in the MSDN section named after my book, right under Visual F#. If you can't wait to check it out, here are all the links:
- The Real-World Functional Programming section on MSDN.
- The source code for individual chapters is available on MSDN Code Gallery.
- I also published annotated TOC with source code links on my functional programming web site.
While working on the articles, I also wrote about a few topics that we didn't use in the final version. You'll see them on my blog in the next few days, as soon as I edit them into a blog post form.
At the moment, the information about authors on MSDN is a bit confusing, so let me clarify:
- The Chapter I. Introducing Functional Programming is based on the Real-World Functional Programming book, which I wrote together with Jon Skeet.
- The Chapter IV. Numerical and Symbolic Computing was written mainly by Yin Zhu, who is well known in the F# community thanks to his F# and Data Mining blog.
- The remaining four chapters are new material written by me. They are partly based on my recent talks on reactive programming, concurrent programming with agents and accessing data.
There are quite a few people who significantly helped with the project in one way or another. Nermina Miler and Mike Stephens from Manning helped to manage everything. Don Syme and Gordon Hogenson (from the F# documentation team) helped by reviewing several versions of the TOC. Keith Battocchi and Gordon also carefuly reviewed all the articles. Thanks!
In the rest of the article, I'll give a brief overview of each chapter, so that you know what new exciting topics are now covered as part of the F# Documentation on MSDN.
This chapter explains the basic concepts behind functional programming such as immutability, first-class functions and expression-based programming. Many of the concepts are demonstrated in C# to guide programmers without prior experience with F# or functional programming. It also shows the benefits that follow from these concepts, such as the fact that they make testing and reasoning about programs easier.
This chapter explain server-side development and agent-based concurrency in F#. Agents (the
MailboxProcessortype) are introduced using a tutorial that develops a simple chat server using agents, encapsulates it into a reusable .NET object and exposes it as a web page using the
HttpListenertype. The chapter also implements two reusable agents that solve common data processing tasks.
This chapter explain how to write reactive user-interfaces in F# using Silverlight. It covers two approaches to writing reactive applications in F#. The first approach is declarative and it composes data-flow using event combinators. The second approach is more imperative and it describes control-flow using F# asynchronous workflows. The chapter also covers practical aspects, such as how to use F# with XAML and Microsoft Blend.
(This chapter is written by Yin Zhu)
This chapter explain how to use .NET libraries such as Math.NET Numerics, Microsoft Sho, and F# Power Pack to implement numerical algorithms in F#. It explains what makes F# a great language for numerical computing and reviews various numerical libraries for .NET and F#. Three tutorials cover the most common numerical libraries that can be easily used from F#.
This chapter explains how to use .NET web and data technologies from F#. It uses F# to develop the model and controllers of an ASP.NET MVC web application with a front-end created using C# and Razor. It shows how to use asynchronous workflows to write more efficient web pages and how to easily access SQL database using dynamic operator.
This chapter describes the options for visualizing data in F#. The chapter consists of several larger tutorials that cover .NET Chart Controls, the FSharpChart wrapper for F#, Microsoft Excel and briefly also gnuplot. The libraries are demonstrated a few larger tutorials, such as visualization of financial data, and How To articles that show F# code to create common chart types.