I couldn’t resist anymore, and I finally tried F#. For the first two days, it was painful. Some elements of F# syntax are weird. However after getting used to that, F# became a joy, and instead of a week (as I planned) I spent almost two months with F#.
- F# Jumpstart (Pluralsight) 1h 25m – brief introduction to F#, good for a sneak peak
- Introduction to F# by Don Syme (part1, part2, part3)
- F# for C# Developers by Phillip Trelford
- Understanding the World with F# by Tomas Petricek
- Try F# – interactive tutorial for learning F# (works only in IE because of Silverlight)
- Functional Koans – F# – collection of F# exercises inspired by Ruby koans that requires you to fix failing unit tests one by one (fun and informative!)
- F# for beginners by Sacha Barber (Microsoft MVP) – extensive overview of almost all elements of F# language (good as reference)
- Accessing Data with F# Type Providers (Pluralsight) by Tomas Petricek (2h 14m)
- F# Functional Data Structures (Pluralsight) (3h 44m) – deep dive into F# Data Structures
- Type-Driven Development with F# (Pluralsight) by Mark Seemann (3h 56m)
- F# for fun and profit – solid source of knowledge to learn more about F# (when you know the basics)
- fsharp.org – encyclopedia of resources for all topics related to F#
- F# Advent Calendar 2014 and 2015 – set of articles about different topics related to F#
- Domain modelling with the F# type system by Scott Wlaschin
- Railway Oriented Programming — error handling in functional languages by Scott Wlaschin
- Domain-Driven Design, Event Sourcing and CQRS with F# and EventStore by Lev Gorodinski
There is also a book written by Jon Skeet and Tomas Petricek: Real World Functional Programming: With Examples in F# and C#.
- Unit Testing with F# (Pluralsight) by Mark Seemann (1h 32m)
- Introduction to Property-based Testing with F# (Pluralsight) by Mark Seemann (1h 34m)
- Test-Driven Development with F# (Pluralsight) by Mark Seemann (2h 17m)
The most popular F# Web Framework is Suave. There is the SuaveMusicStore tutorial (code), which is inspired by ASP.NET MVC Music Store tutorial. If you want to build Web APIs with F#, check Building REST Api in Fsharp Using Suave.
For more, check Web Programming with F# Guide.
I created an F#-based app for predicting future stock prices (a $1,000,000 idea!). The back-end is written in F# and communicates with a stock data API (Yahoo Finance) through an F# type provider. There is also Suave Web API (microservice), and ASP.NET Core web app that communicates with it. The front-end is powered by Aurelia Framework and D3 library. In other words, I built the F# microservice, consumed it from a non-F# app, and have reusable logic in a separate project. All communication with microservices happens through the client (with Aurelia Framework). So, there is no usage of F# from C#, but… I also created a simple Console app (with C#) that uses mentioned F# logic. There is also a Windows Forms app for displaying estimates, written in F#, that also has use reusable logic.
Entire source code is available on GitHub. Check it out!
Programming in F# is pure joy! It’s a great language for working with data. Moreover, F# fits perfectly into today’s world of microservices. You don’t have to rewrite your existing app or create an entire app with F#. You can just create one microservice with F# and see how it works for you!