Functional Programming Concepts

Language-agnostic functional programming taught mainly in TypeScript: pure functions, immutability, composition, recursion and laziness, algebraic data types, Option and Result, functors and monads, and how to apply it all in real projects.

Start course →

What you'll learn

  • Explain pure functions, referential transparency and why isolating side effects makes code easier to test and reason about.
  • Work with immutable data using copies, structural sharing and readonly types.
  • Use higher-order functions, closures, composition, currying and map/filter/reduce to build programs from small parts.
  • Apply recursion, lazy evaluation with generators, and memoisation with an eye on their costs.
  • Model data with algebraic data types, exhaustive pattern matching, Option and Result instead of null and exceptions.
  • Recognise functors and monads in everyday code and structure applications as a functional core with an imperative shell.

Syllabus

Foundations of Functional Programming

  1. What Functional Programming Is
  2. Pure Functions and Referential Transparency
  3. Side Effects and Why Isolating Them Helps

Immutability

  1. Immutable Data and Why It Matters
  2. Copying versus Structural Sharing
  3. Immutability in Practice

Functions as Values

  1. First-Class and Higher-Order Functions
  2. Closures
  3. map, filter and reduce

Composition

  1. Function Composition and Pipelines
  2. Currying and Partial Application
  3. Point-Free Style and Its Limits

Recursion and Laziness

  1. Recursion versus Iteration
  2. Lazy Evaluation, Generators and Iterators
  3. Memoisation

Types for Functional Programming

  1. Algebraic Data Types
  2. Pattern Matching and Exhaustiveness
  3. Option/Maybe and Result/Either

Functional Abstractions

  1. Functors: map as a Pattern
  2. Monads Explained Practically
  3. Functional Core, Imperative Shell

Functional Programming in Practice

  1. FP in Popular Languages and Libraries
  2. FP in Frontend and Data Pipelines
  3. Trade-offs and Performance Pitfalls
  4. A Functional Programming Checklist