tl;dr This post is a list of resources for learning F# and overview of my mini-project: Stock Estimator.
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 use to that, F# became a joy, and instead of a week (as I planned) I spent with F# almost two months.
- F# Jumpstart (Pluralsight) 1h 25m – brief introduction to F#, good for the beginning the get the sneak peak
- Introduction to F# by Don Syme (part1, part2, part3)
- F# Cheatsheet – great overview of F# features
- 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 features 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 great SuaveMusicStore tutorial (code), which is inspired by ASP.NET MVC Music Store tutorial. If you want to build Web API with F#, check Building REST Api in Fsharp Using Suave.
For more, check Web Programming with F# Guide.
I created F# based app for predicting future stock prices ($1,000,000 idea!). The back-end is written in F#, and communicates with stock data API (Yahoo Finance) through F# type provider. There is also Suave Web API (microservice), and ASP.NET Core web app that communicates with it. Front-end is powered by Aurelia Framework, and D3 library. In other words: I built F# microservice, consumed it from non-F# app, and have reusable logic in separated project. All communication with microservice happens through the client (with Aurelia Framework). So, there is no usage of F# from C#, but…I also created simple Console app (with C#) that uses mentioned F# logic. There is also Windows Forms app for displaying estimates, written in F#, that also 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 already existing app, or create entire app with F#. You can just create one microservice with F#, and see how it works for you!