Welcome to FunctorHub!

He who has a why to live for can bear almost any how. ― Friedrich Nietzsche

There is one problem with many educational resources on sciences and math: they do a very good job explaining the "how", while completely ignoring the "why". In such books, concepts will be well defined and theorems well explained. You will however find little information on how people came upon them, what problems they faced, why they solved them this way and not another. This may greatly complicate learning, especially in applied disciplines.

FunctorHub aims to solve this problem. You are welcome to read FunctorHub's vision to find out how. If you are interested in the project, please consider subscribing to our newsletter, and following us on Facebook and Twitter. Happy exploring!

    Site announcements

    Picture of Anatolii Kmetiuk
    Introduction to Functional Architectures book and more
    by Anatolii Kmetiuk - Saturday, 5 August 2017, 11:27 AM


    It is my pleasure to announce a new book on functional programming available on this site - Introduction to Functional Architectures. The main feature of this book is that it follows the development of a real application, commit by commit. The preview of the first few chapters is available for...

    Read the rest of this topic
    (121 words)

    Available courses

    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.