122 Decks - Earliest First - Ch
se one -
invert order
1
The Open-Closed Principle - Part 1 - The Original Version
2
The Open-Closed Principle - Part 2 - The Contemporary Version - An Introduction
3
Lambda Expressions and Java 8 - Lambda Calculus, Lambda Expressions, Syntactic Sugar, First Class Functions
4
De Morgan's Laws are Monoid Homomorphisms
5
Arrive at monads by going from composition of pure functions to composition of effectful functions
6
Compositionality and Category Theory
7
Functor Laws
8
Natural Transformations
9
Monad as Functor with pair of Natural Transformations
10
Point-free or Die - Tacit Programming in Haskell
11
Monad Laws Must Be Checked
12
Kleisli Composition
13
Writer Monad for logging execution of functions
14
Applicative Functor - Part 1
15
Abstracting over Execution with Higher Kinded Types, and how to remain Purely Functional
16
Sequence and Traverse - Part 1
17
Definitions of Functional Programming
18
Monoids - Part 1 - With examples using Scalaz and Cats
19
Monoids - Part 2 - With examples using Scalaz and Cats
20
Sequence and Traverse - Part 2
21
Sequence and Traverse - Part 3
22
Functor Composition
23
Monads do not Compose
24
Monad Transformers - Part 1
25
Addendum to `Monads do not Compose`
26
Non-strict functions, bottom, and Scala by-name parameters
27
Function Composition - forward composition versus backward composition
28
Year when lambda functions were introduced in various languages
29
Ad hoc Polymorphism using Type Classes and Cats
30
Symmetry in the interrelation of flatMap/foldMap/traverse and flatten/fold/sequence
31
Functional Effects - Part 1
32
Functional Effects - Part 2
33
Applicative Functor - Part 2
34
Applicative Functor - Part 3
35
State Monad
36
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 1
37
The Monad Fact Series
38
Monad Fact #1
39
Monad Fact #2
40
Monad Fact #3
41
Monad Fact #4
42
Monad Fact #5
43
Monad Fact #6
44
From Scala Monadic Effects to Unison Algebraic Effects
45
Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2
46
Game of Life - Polyglot FP - Haskell and Scala - Part 1
47
Game of Life - Polyglot FP - Haskell and Scala - Part 2
48
Game of Life - Polyglot FP - Haskell and Scala - Part 3
49
Folding Unfolded - Part 1
50
Folding Unfolded - Part 2
51
Folding Unfolded - Part 3
52
The Functional Programming Triad of fold, scan and iterate
53
Folding Unfolded - Part 4
54
The Functional Programming Triad of Folding, Scanning and Iteration - A first example in Scala and Haskell
55
Folding Unfolded - Part 5
56
Scala 3 enum for a terser Option Monad Algebraic Data Type
57
Function Applicative for Great Good of Palindrome Checker Function
58
Sierpinski Triangle - Polyglot FP for Fun and Profit - Haskell and Scala
59
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 1
60
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 2
61
Left and Right Folds - Comparison of a mathematical definition and a programmatic one
62
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 3
63
Quicksort - a whistle-stop tour of the algorithm in five languages and four paradigms
64
N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 4
65
Functional Core and Imperative Shell - Game of Life Example - Haskell and Scala
66
The Functional Programming Triad of map, filter and fold
67
‘go-to’ general-purpose sequential collections - from Java To Scala
68
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Scala
69
Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Java
70
Side by Side - Scala and Java Adaptations of Martin Fowler’s Javascript Refactoring Example
71
The Expression Problem Part 1
72
Computer Graphics in Java and Scala - Part 1
73
The Expression Problem Part 2
74
Computer Graphics in Java and Scala - Part 1b
75
The Uniform Access Principle
76
The Sieve of Eratosthenes - Part 1
77
Defining filter using (a) recursion (b) folding (c) folding with S, B and I combinators (d) folding with applicative functor and identity function
78
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala to Java
79
Sum and Product Types - The Fruit Salad & Fruit Snack Example
80
The Sieve of Eratosthenes - Part 2 - Genuine versus Unfaithful Sieve
81
Nat, List and Option Monoids - From scratch - Combining and Folding - An example
82
The aggregate function - from sequential and parallel folds to parallel aggregation
83
Kleisli composition, flatMap, join, map, unit - implementation and interrelation - V2 updated for Scala 3
84
N-Queens Combinatorial Puzzle meets Cats
85
A sighting of sequence function in Practical FP in Scala
86
A sighting of traverseFilter and foldMap in Practical FP in Scala
87
A sighting of traverse_ in Practical FP in Scala
88
Fusing Transformations of Strict Scala Collections with Views
89
Tagless Final Encoding - Algebras and Interpreters and also Programs
90
Scala Left Fold Parallelisation - Three Approaches
91
Folding Cheat Sheet Series Titles
92
Folding Cheat Sheet #1 - Folding over recursively defined data structures for natural numbers and lists
93
Folding Cheat Sheet #2 - Programmatic and mathematical definitions of right fold and left fold
94
Folding Cheat Sheet #3 - The universal property of fold
95
Folding Cheat Sheet #4 - For functions that can be defined both as a right fold and as a left fold, one may be more efficient than the other
96
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
97
A Sighting of filterA in Typelevel Rite of Passage
98
Hand Rolled Applicative User Validation Code Kata
99
Folding Cheat Sheet #5 - Folding a list right and left using Cons and Nil results in the identity and reverse functions
100
Folding Cheat Sheet #6 - Left and right folds and tail recursion
101
Folding Cheat Sheet #7 - The three duality theorems of fold
102
Function Applicative for Great Good of Leap Year Function
103
Folding Cheat Sheet #8 - Folding with monoids
104
From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism - An Example
105
The Debt Metaphor - Ward Cunningham in his 2009 YouTube video
106
Fibonacci Function Gallery - Part 1
107
Fibonacci Function Gallery - Part 2
108
Drawing Heighway’s Dragon - Part 1 - Recursive Function Rewrite - From Imperative Style in Pascal 64 To Functional Style in Scala 3
109
Drawing Heighway’s Dragon - Part 2 - Recursive Function Simplification - From 2^n Recursive Invocations To n Tail-Recursive Invocations Exploiting Self-Similarity
110
Drawing Heighway’s Dragon - Part 3 - Simplification Through Separation of Concerns - Rotation Without Matrix Multiplication
111
The Nature of Complexity in John Ousterhout’s Philosophy of Software Design
112
Drawing Heighway’s Dragon - Part 4 - Interactive and Animated Dragon Creation
113
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'
114
Folding Cheat Sheet #9 - List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'
115
ApplicativeError functions handling and recovering from errors: A mnemonic to recall their signatures from their names
116
Test Doubles - Terminology, Definitions and Illustrations - with Examples - Part 1
117
Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 1
118
Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 2
119
AI Concepts - MCP Neurons
120
Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to AI Coding Tool 'Claude Code'
121
Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to Github Copilot Chat - using Scala in IntelliJ IDEA
122
The Bowling Game - From Imperative to Functional Programming - Part 1