Jul 12, 2017

Introductory Functional Programming Course: Learning the Intuitive Way

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.

If you know the enemy and know yourself, you need not fear the result of a hundred battles. If you know yourself but not the enemy, for every victory gained you will also suffer a defeat. If you know neither the enemy nor yourself, you will succumb in every battle. ― Sun Tzu, The Art of War

Failure to understand the "why?" behind the concepts you are using, the motivation for their existence, means "not knowing yourself". It means you do not realize what problems they were intended to solve and the nature of the solution. You also don't see when a solution is a crutch and begs replacement - because deficiencies are a result of real-world pressures imposed on real-world people.

FunctorHub was created to address the problem of "why". It's aim is to provide all the information you need to understand the motivation and the essence behind advanced tools and techniques in Scala, while ignoring the noise. If you are looking to learn things like Cats, Typelevel libraries, compiler technologies like Scala Meta, purely functional architectures with Scala - this is your one-stop shop!

Currently we only have one course - the introductory one about Cats. This will change soon! If you are interested in learning about the new courses as they appear, please consider subscribing to our newsletter.

If you are interested, you are welcome to check the project out at http://functorhub.com/.