FSharp Roadmap Introduction

FSharp  roadmap. This post is part of the Xamarin Roadmap that you can check if you didn’t. It is good to remember that this guide is just an introduction to F#, it can not be taken as the final guide.

To continue with Xamarin Roadmap it is necessary to understand the F# base, that is why we have included the FSharp Roadmap. There some things you need to know before to start this FSharp roadmap as a guide. I really recommend you to check this link.

Note: As I said in the introduction post, what I have done is to take as a base the roadmap proposed by Xamarin University to create a new one. So, If you want to see the original base I really recommend you to go there before they migrate it to Microsoft Learn.

Introduction to F

This track provides an introduction to the F# programming language. This set of modules provides experienced C# developers with the knowledge they need to start programming in F#.

Introduction to F# [FSC101]

Functional languages use the principle of data immutability to avoid variables that maintain state. This characteristic makes functional programs easier to validate and easier to execute in multithreaded or parallel-processing environments. This module introduces you to the F# functional programming language. You will see how to code a simple F# program and execute it using a command-line interpreter called the Read-Evaluate-Print-Loop (REPL).

Useful links

Exploring on your own

Projects in F# [FSC102]

To build a real-world F# application you will use a development environment to create a project and organize your source code into multiple files. You will want to integrate 3rd-party libraries and code your own custom types. This module takes you through the entire process of using Visual Studio to create and run an F# console application.

Useful links

Exploring on your own

Recommended Prerequisites: Introduction to F# [FSC101].

Data Structures in F# [FSC103]

Managing in-memory data is required in most apps and F# contains powerful data-storage and processing APIs to help you. The APIs are optimized for specific use-cases; for example, some work best if your data is static while others are intended for large data sets. This module shows you several common F# data structures and discusses the pros and cons of each. By the end of the module, you will be able to choose the right storage option for your application.

Useful links

Exploring on your own

Recommended Prerequisites: Projects in F# [FSC102].

Using Async [FSC104]

Apps often need to perform long-running operations like downloading data from the cloud or accessing the local file system. The libraries that do this work for you generally offer asynchronous APIs that let your app stay responsive to user input while these operations run in the background. This module shows you how to use the async keyword to write this type of asynchronous code. You will also see the details of the underlying implementation and discuss some best practices to follow when utilizing this C# feature.

Useful links

Exploring on your own

Recommended Prerequisites: Data Structures in F# [FSC103]

Partial Application and Pattern Matching [FSC105]

One strength of functional languages is their ability to combine functions in concise yet powerful ways. For example, you can pass a function as a parameter to another function or adapt a general function to your specific needs by hardcoding some of the parameter values. This module shows you how to use currying and partial function application to create new functions that perform the exact operation you need. Another useful feature in many functional languages is pattern matching that lets you examine data values and branch based on some matching characteristic of the data. In this module, you will use pattern matching to select data from a collection and apply a function to transform it.

Useful links

Exploring on your own

Recommended Prerequisites: Data Structures in F# [FSC103].

Type Providers in F# [FSC106]

F# makes it easy to load external data into your app. An F# Type Provider encapsulates all the necessary operations: it connects to the data source, determines the shape of the data, constructs objects, and populates the objects with the external data. This module shows you how to use Type Providers in your application. You will see how to instantiate a provider, read data, and execute queries against the provider to select only the data you need.

Useful links

Exploring on your own

Recommended Prerequisites: Type Providers in F# [FSC105].


This FSharp roadmap is on GitHub in a public repository where everyone can support it or give us recommendations (PRs are welcome 😎). In the same way, the content will be updated here.

Of interest…


Thank you somuch for reading this post! 
FSharp Roadmap Introduction
5 (100%) 2 votes



I invite you to leave me your feedback about this post in the comment box. If you want me to talk about a specific topic or detail a few more topics, let me know. The most interesting topics will be added to my list of future posts.

Do you like posts like this? Then, subscribe  and activate push notifications to receive updates. See you next time!


Leave me your comments

Notify of