Functional Programming

0%
Coding
Theory
Quiz

    Pure Functions & Referential Transparency

    • Refactor to a Pure Function

      Junior
    • Pure Group By via Fold

      Mid
    • Thread the Counter State

      Mid
    • Pure Frequency Map

      Mid
    • Loop to Pure Fold: Max With Index

      Mid
    • Pure ID Generator

      Senior

    Immutability & Persistent Data Structures

    • Immutable List Operations

      Junior
    • Immutable Nested Update

      Mid
    • Persistent Immutable Stack

      Mid
    • Deep Freeze and Pure Update

      Senior
    • Persistent Two-Stack Queue

      Senior

    Optics Transducers & Combinators

    • Factorial and Fibonacci in CPS

      Mid
    • Parser Combinator Core

      Senior
    • Arithmetic Expression Parser Combinator

      Senior
    • Composable Record Lenses

      Senior
    • Map and Filter Transducers

      Mid
    • Verify the Lens Laws

      Mid
    • Transducer Early Termination

      Senior
    • Parse a Signed Integer

      Mid
    • Map, Filter, Reduce via Transducers

      Mid
    • Transducers with Right-to-Left Compose

      Senior
    • Church Encoding From Scratch

      Senior
    • CPS Expression Evaluator

      Senior
    • Fixed-Point Combinator

      Senior
    • Immutable Lens: view, set, over

      Mid

    Higher Order Functions

    • Map From Scratch

      Junior
    • Left Fold From Scratch

      Junior
    • Pure myFilter From Scratch

      Junior
    • Function Factories with Closures

      Junior
    • Combinator Toolbox

      Mid
    • Element-Wise Zip With

      Mid
    • Take While and Drop While

      Mid
    • Predicate Combinators

      Mid
    • Scan (Left Accumulate)

      Mid
    • FlatMap Over a List

      Mid

    Function Composition & Point Free

    • Compose Functions Right-to-Left

      Junior
    • Left-to-Right Pipe

      Junior
    • Pure Map/Filter/Reduce Pipeline

      Mid
    • Composable Comparators

      Senior
    • Juxt and Converge Combinators

      Senior
    • Point-Free Word Counter

      Senior

    Currying & Partial Application

    • Curry a Three-Argument Sum

      Junior
    • Partial Application

      Junior
    • Partial Application From the Right

      Mid
    • Curry a Function

      Senior

    Closures & Memoization

    • Build a Counter Factory

      Junior
    • Bank Account Closure

      Junior
    • Memoize a Single-Argument Function

      Mid
    • Memoized Fibonacci Closure

      Mid
    • Once-Only Function Wrapper

      Mid
    • Keyed Memoization with Resolver

      Senior

    Recursion & Folds

    • Recursive List Sum

      Junior
    • Pure Recursive List Reversal

      Junior
    • Mutually Recursive Even and Odd

      Junior
    • Recursive Maximum of a List

      Junior
    • Tail-Recursive Factorial

      Mid
    • Tail-Recursive Fibonacci

      Mid
    • Flatten Nested Lists

      Mid
    • Fold From Scratch

      Mid
    • Tail-Recursive Sum via Left Fold

      Mid
    • Count and Sum Tree Leaves

      Mid
    • Deriving List Functions From foldr

      Senior
    • Stack-Safe Trampoline Driver

      Senior
    • Ackermann Function

      Senior
    • Stack-Safe Factorial Trampoline

      Senior

    Lazy Evaluation & Infinite Streams

    • Infinite Naturals and Take

      Junior
    • Lazy Map and Filter

      Junior
    • Lazy Range Generator

      Junior
    • Lazy Infinite Fibonacci

      Mid
    • Lazy takeWhile and dropWhile

      Mid
    • Lazy Iterate Anamorphism

      Mid
    • Memoized Thunk Primitive

      Mid
    • Lazy Repeat and Cycle

      Mid
    • Lazy Element-Wise Zip

      Mid
    • Lazy Prime Sieve

      Senior
    • Memoized Cons-Stream

      Senior
    • Short-Circuiting Lazy Pipeline

      Senior
    • Lazy Unfold Anamorphism

      Senior
    • Lazy FlatMap

      Senior
    • Lazy Windows and Chunks

      Senior

    Algebraic Data Types & Pattern Matching

    • Shape Area Sum Type

      Junior
    • Cons-List Length

      Junior
    • Peano Natural Numbers

      Junior
    • Evaluate an Arithmetic Expression ADT

      Mid
    • Binary Tree Depth and Sum

      Mid
    • Option and Result ADTs

      Mid
    • Recursive Map and Append on Cons-Lists

      Mid
    • Count JSON Tree Nodes

      Mid
    • Traffic Light State Machine

      Mid
    • Fully-Parenthesized Expression Printer

      Mid
    • Mirror a Binary Tree

      Mid
    • Canonical JSON ADT Stringify

      Senior
    • Vending Machine State Machine

      Senior
    • Event-Sourced Bank Account

      Senior
    • Tree Fold Catamorphism

      Senior

    Functors Monads & Applicatives

    • Maybe Functor Map

      Junior
    • Maybe getOrElse and isNone

      Junior
    • Total Functions with Maybe

      Junior
    • Either Railway Validation

      Mid
    • Maybe flatMap for Nested Lookups

      Mid
    • Either Map and MapLeft

      Mid
    • Box Functor and Its Laws

      Mid
    • Sequence a List of Maybes

      Mid
    • Writer Monad With Logging

      Mid
    • Refactor Null Checks to a Maybe Monad

      Mid
    • Identity Monad

      Mid
    • Error-Accumulating Validation Applicative

      Senior
    • State Monad Stack Machine

      Senior
    • Lazy IO Monad

      Senior
    • Traverse With Either

      Senior
    • State-Monad RPN Evaluator

      Senior
    • Applicative Maybe: ap and lift2

      Senior
    • Kleisli Compose for Maybe

      Senior