In this latest course from FSharp.TV, we are going to learn Functional-First Programming with F# and explore what it takes to build a web server library in F#.
How has the course been structured?
We all know reading the source code of a widely used library/project will help us to learn a programming language better. But how about learning a language by (re)building the project itself from the ground up? Sounds interesting, isn't it?
In this course, we are going to build a minimal version of the Suave library, a popular web development library in F#.
We will be creating the library by focusing on one requirement at a time, and evolve it incrementally.
Note: To get most out of this course, code side by side with the videos and experience the essence of functional programming.
What is Suave?
Suave, a simple web development library in F#. It provides a lightweight, non-blocking web server and a set of combinators to manipulate route flow and task composition. The non-blocking I/O model is efficient and suitable for building fast, scalable network applications.
By Completing this course, You will learn
This video introduces the Author and his experiences in using F# in production. He also explains how why he has created this course and how you can approach this video tutorial to get the most out of it.
This video will provide an overview of what to expect from the course, what you will be creating and prerequisites.
This video presents three characters roleplaying in the development of MiniSuave
In this video, we will be implementing our first function "OK" to enable Mark to send a response with the status code "Ok".
This video adds two more functions to send Internal Error and Not Found responses. It also teaches how to remove duplicate code using partial application.
We will learn how to implement request filters to send responses only if the HTTP method matches.
During the previous video, we learned how to filter requests based on HTTP methods. Now, we'll be extending it to filter based on resource path.
The implementation of request filters has broken the response function that we have implemented in the introductory videos. So, let's spend some time to fix it.
In this video, we will be extending the MiniSuave library by adding an API to deal with headers in the Response.
How about some time off to reflect? In this video, we will evaluate our MiniSuave design and see how can we make it better.
Function Composition is an integral part of functional programming. This video will help us to understand what we need to change in MiniSuave to enable Function Composition
In this video, we will be making a significant amount of changes in MiniSuave to make it elegant and easier to use.
We need to handle multiple kinds of requests in a web application. But MiniSuave is not yet designed for it. Let's add a new function "Choose" to make it happen.
This video explains about the combinator pattern and how it has been applied in MiniSuave
Congratulations for completing the course. Let's see where you can go from here.
Tamizh is a Pragmatic, Passionate and Polyglot Programmer. He started his programming journey at the age of 12, and the passion has not left him since then.
He is a Full-Stack solution provider and has a wealth of experience in solving complex problems using different programming languages and technologies. F#, Node.js, Golang, Haskell are some of his favorites.
Tamizh is also a functional programming evangelist and authored a book "F# Applied", a practical guide for web development in F# using Suave.