The Course

As any great story, we need to start from the very begining. In order to warm engines, we'll see what functional programming is and what their basic principles are. And it's free... What are you waiting for?

In this week, you're already prepared to start going deeper. Since ages, recursion has been considered the ugly guy. Some (very) bad teachers encourage against it, saying that it's even worse than Comic Sans. In this week we're going to see that it's not as bad as some say, but it's one of the most powerful tools in programming in general (and in functional programming in particular). You need to learn some tricks to use it properly, and then you'll be ready to forget your loops forever...

  • Recursion
  • Recursive Functions
  • Tail Recursion and Tail Call Optimization
Functions are the cornerstone of Functional Programming. You already guessed it... In this week you'll learn new ways to deal with functions, not just to group code together, but to combine and compose several functions to create higher abstractions. You'll get the most from your functions

  • Functions as First Class Citizens
  • Lambdas
  • Partial Applications and Currying
  • Continuation Passing Style
  • Functions Composition
  • Creating expressions
  • Play combine learn
We're sure you already use map or reduce functions, but you're not so sure about how to use them properly or how they're implemented internally. Let's master these "functional functions" like nobody before

  • Map
  • Filter
  • Fold
  • FlatMap
  • Zip, Foreach, Sort/ed

Week 5: Functors

There you go! After 4 weeks of functional programming exposure, we're ready to dive into the first weird concept. But don't worry, it's not as hard as it looks: you'll learn what a "functor" is and you'll realize that you've been using functors for some time without realizing it!

  • Functor Option
  • Collection Functor
  • Result Functor

Week 6: Monoids

It wasn't so hard, was it? Now you're going to learn your second functional pattern: the monoid. For that, we're going to implement a small library for validations following all your brand-new knowledge...

  • Monoids
  • Use return values
  • Combine AND validate
  • Combine validatORs
  • Semigroup
  • Monoid is not an insult

Week 7: Monads

Finally! If you at some point have been scared about functional programming, chances are monads are the cause. After this week, you finally don't be scared anymore, and you'll learn how monads work, how to use them, and how to create your own ones! And most important, at the end you'll realize that "monads are just monoids in the category of endofunctors". It's true!

  • What is a monad?
  • Your Results are monads

Week 8: Applicatives

Now that you know what a monad is, let's go for other powerful functional pattern: the applicative.

  • What is an Applicative?
  • Applicative for Validation
  • This is just a mess!

Weeks 9 & 10: Mixing everything together

After these 8 weeks, you've learnt a lot of new (and old) concepts. Some of them are so powerful that you'll need weeks (or even months) of practice to be proficient enough. So, in order to accelerate your learning, now we're going to use all those concepts together, in a new library to deal with asynchronous code: we're going to create the Future.

  • Won't somebody please think of the asychronous code?
  • Functor-ize the Future
  • Monad-ize the Future
  • Applicat-ize the Future
  • Won't somebody please think of the sychronous code?
  • Validations
  • Operators of the Future
  • Final Touches