How to embrace (and fall in love) with types and code that has no loops, global state, mutation by default, nor other mainstream constructs.

🌱 Develop intuition for FP

🔧 Acquire a new toolbox

💾 Unlearn old habits

🧠 Shift your thinking

🕺 Bring fun into programming

Course curriculum

    1. Cornerstones

    2. Referential transparency

    3. Stateless state

    4. [Metaphore] Stateless state

    5. Embracing immutability

    6. Expression-oriented programming

    7. Exercises

    1. Iterating with and without loops

    2. Recursion

    3. Functions

    4. Folds

    5. Exercises

    6. Types for thought

    1. How I learned to stop worrying and love the types

    2. Parse, don’t validate

    3. Newtypes

    4. Algebraic data types

    5. Smart constructors

    6. Exercises

    1. Happy path programming

    2. How to model failure

    3. [Advanced] Error handling

    4. Exercises

    1. The beauty of composition

    2. How it all ties together

    3. Exercises

About this course

  • $41.00
  • 20+ lessons
  • Fun exercises
  • No-bullshit clarity

    Functional programming doesn’t have to be puzzling or discouraging. The lessons are short and crystal-clear

  • This is not another resource about definitions

    We won’t define functions, currying, type classes, and so on. We aim to cover how the functional concepts interact, fit into the bigger picture, and, most importantly, make them intuitive.

  • Make FP click


“Such a good work, I’m so proud”

My mother

“This is the course we’ve all been waiting for”

My spouse


  • Who is this course for?

    This course is for anyone who wants to develop the ability to think like a functional programmer. If you’re a beginner, you will build a solid foundation. If you have experience, you will either deepen your understanding or completely shift your mindset and unlearn your old habits. This course is most suitable for people who are (1) already familiar with a language with functional capabilities and want to understand the FP side of things or (2) learning a functional language.

  • Is this course for me?

    You’re a (OOP) Scala dev trying to grok FP — this course is a perfect companion. You’re learning Haskell — this course is a great companion. You’re a starting to learn Rust (as a first language) — this course will only make you more confused, please come back later. And so on. Please reach out if you’re not sure if this course is for you

  • What language(s) should I know?

    Any language at a comfortable intermediate level. This course is (kind-a) language agnostic with examples in pseudocode, Scala, Rust, JavaScript, Haskell, … and illustrations.

  • How much time will it take to complete this course?

    The assumption is 6 weeks with 3-5 hours per week. Reviewing videos multiple time is okay and encouraged.

  • Will I get feedback on assignments?

    No. Not in the moment. We’re working on introducing a community server and feedback tier.

  • What if I don't hate the course?

    If you don't love the course, just refund it (directly through the platform or contact us for help).

  • What if I can’t afford this course?

    We're looking into coupons and other options. Please reach out to us — we'll figure something out.

Make FP click


Jay Zelenskyi

Impure Pics

I get paid as a software engineer. Other than that, I like to distill FP-related topics using articles, pictures, videos, and code.