This book is a practical introduction to purely functional architectures. It follows the development of a real-world application, commit by commit, to see how it grows in a functional style from the very beginning. Best part, you can download a free preview of the first few chapters via the link above, to see whether this is your plate.
Purely functional style implies programming with no side effects and mutations in your application's business logic. Mutations and side effects mean additional mental load for the programmer, so getting rid of them simplifies reasoning about programs. However, it is tricky to get rid of side effects. If you do that naively, the programs will become clumsy and hard to maintain.
There exist libraries to aid you in purely functional programming – libraries like Cats. When introduced to such libraries, people often get overwhelmed by very reasonable questions. Why do these libraries exist at all? How can they help me with my particular real-world problems? How do I get started with using them?
This course's goal is to answer these precise questions. By the end of the course, you will make the paradigm shifts necessary for getting started in the functional programming. You will be able to use Cats to write simple programs, and have a good intuition on what is going on.
Keep in mind, however, that practice makes perfect. The knowledge from this course will not make you much difference if you don't start to apply it in your projects straight away. If you are ready for this – looking forward to see you at the course!
Introduction to Purely Functional Style – 01:02:01
Effect Types: The problem with the Functional Style – 09:13
Effect Types: The solution to the problem – 10:18
Implicits and the Rich Wrapper Pattern – 16:00
Type Classes: Motivation, Intuition and Theory – 09:07
Type Classes: Implementation – 08:54
Type Classes: Usage – 08:26
Monads: Motivation, Application and Interpretation – 59:18
Programming with Effect Types – 15:07
Monads. Composing Effect Computations. - 14:58
What are Monads? Interpretation of the Concept. - 12:40
Monads as Type Classes: How to Define and Implement them? - 16:31
Monads as Type Classes: Usage - How do they Work? - 10:41
Cats – the Library of Type Classes for Functional Programming – 01:04:22
Introduction to Cats – 16:47
Usage of Cats – 16:39
Cartesian: When Monad is Not Enough – 10:53
Cartesian: Implementation and Usage – 14:22
Next steps in learning Functional Programming – 05:38
Total duration: 03:16:22
The communication with the instructor and other students can be done through the forums on the course page.