Beginners course on F# is out!

Finally, after some months, the beginners course on F# as your first functional programming language is out!

The course is aimed to programmers that want to venture into functional programming, and have some experience in other languages. I also focused on non .NET programmers, because there is plenty of books and around the web to get you on board F# if you already know C#.

The purpose of the course is to widen the perspective on how to code, bringing more tools to the box of the readers. Even though they decide no to choose F# for their daily programming chores, I think that this trip to F# and the basics is an experience worth taking. Also, exposing oneself to a different framework (.NET in this case) helps to understand that it is not difficult to switch from one well-established ecosystem to another.

I decided not to cover all the features of the language, and keep the focus on two main aspects:

  • Functional style of programming, to see how immutability works and can be used to produce clean and readable code, and to take explicit control of side effects
  • Domain modeling, to understand the importance of an accurate definition of all the data and procedures that your code needs.

Most of the lessons are written as Polyglot Notebooks, a .NET variant of Jupyter Notebooks that can run code in different languages. Since it is possible to run them in Binder, no .NET installation is required. This eases the onboarding of the readers, without the not-another-framework-installation hassle. Only at the end of the lessons we approach .NET, learn how the code is organized, and how tests are managed.

There are plenty of exercises along the lessons, some of them are classic ones, like katas, while other are problems distilled from the web and books resources, and some of my own. The reader is exposed to domain modelling through the vending machine example, developed in the different stages of the course.

I used the spanish version for my classes last semester at Instituto Balseiro, which is more or less the read only version of the notebooks.

I took the liberty to introduce some references to my roots, celebrating a writer, and the championship at the World Cup Qatar 2022.

Without further preamble, here it is:

Make F# your first functional programming language

Start here for the english version o empezá acá si querés la versión en español.

I will expand some of the content that is still a little bit slim, and add more lessons on topics such as monads and images, that have been already requested by early readers.

Hope you will enjoy it as much as I did writing it.