Typelevel motto is "Let the Scala compiler work for you". The features of the libraries of this umbrella organisation are:

  • They are type-level, and making the compiler work for you. If you work with them, you will have hard times compiling your software. This is because the compiler will see much more logical errors than in a normal program, and will emit errors on such occasions. This is achieved by the fact that you embed a lot of additional information about your program in its types. This way, if the program compiles, you can be sure it will run correctly. Runtime errors are much harder to detect than the compile-time ones.
  • They aim to be purely functional. No mutations, no side effects. This means reduced mental load for you, and extra flexibility and composability for your programs.

You can learn how these and other features can help you in your projects in this category.

29 EUR

Download Free Sample

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.

49 EUR


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!


  1. Introduction to Purely Functional Style – 01:02:01

    1. Effect Types: The problem with the Functional Style – 09:13

    2. Effect Types: The solution to the problem – 10:18

    3. Implicits and the Rich Wrapper Pattern – 16:00

    4. Type Classes: Motivation, Intuition and Theory – 09:07

    5. Type Classes: Implementation – 08:54

    6. Type Classes: Usage – 08:26

  2. Monads: Motivation, Application and Interpretation – 59:18

    1. Programming with Effect Types – 15:07

    2. Monads. Composing Effect Computations. - 14:58

    3. What are Monads? Interpretation of the Concept. - 12:40

    4. Monads as Type Classes: How to Define and Implement them? - 16:31

    5. Monads as Type Classes: Usage - How do they Work? - 10:41

  3. Cats – the Library of Type Classes for Functional Programming – 01:04:22

    1. Introduction to Cats – 16:47

    2. Usage of Cats – 16:39

    3. Cartesian: When Monad is Not Enough – 10:53

    4. Cartesian: Implementation and Usage – 14:22

    5. 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.