120 Decks Ordered By PDF Download Count - Highest First - Chse one - invert order

# Title Downloads  
1 The Expression Problem Part 2 2459  
2 The Nature of Complexity in John Ousterhout’s Philosophy of Software Design 1628  
3 The Debt Metaphor - Ward Cunningham in his 2009 YouTube video 1449  
4 Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid 1230  
5 Drawing Heighway’s Dragon - Part 3 - Simplification Through Separation of Concerns - Rotation Without Matrix Multiplication 1030  
6 Kleisli Composition 886  
7 The Open-Closed Principle - Part 1 - The Original Version 722  
8 Monad Laws Must Be Checked 648  
9 Folding Cheat Sheet #6 - Left and right folds and tail recursion 635  
10 N-Queens Combinatorial Puzzle meets Cats 607  
11 List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate' 597  
12 Functional Core and Imperative Shell - Game of Life Example - Haskell and Scala 574  
13 Tagless Final Encoding - Algebras and Interpreters and also Programs 539  
14 Test Doubles - Terminology, Definitions and Illustrations - with Examples - Part 1 533  
15 Folding Cheat Sheet #1 - Folding over recursively defined data structures for natural numbers and lists 523  
16 The Functional Programming Triad of Folding, Scanning and Iteration - A first example in Scala and Haskell 495  
17 Fibonacci Function Gallery - Part 2 484  
18 Lambda Expressions and Java 8 - Lambda Calculus, Lambda Expressions, Syntactic Sugar, First Class Functions 482  
19 Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 1 467  
20 The Functional Programming Triad of map, filter and fold 466  
21 The Uniform Access Principle 451  
22 Drawing Heighway’s Dragon - Part 1 - Recursive Function Rewrite - From Imperative Style in Pascal 64 To Functional Style in Scala 3 438  
23 Algebraic Data Types for Data Oriented Programming - From Haskell and Scala to Java 431  
24 A Sighting of filterA in Typelevel Rite of Passage 425  
25 From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism - An Example 425  
26 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 1 419  
27 Fibonacci Function Gallery - Part 1 411  
28 Hand Rolled Applicative User Validation Code Kata 409  
29 Folding Cheat Sheet #7 - The three duality theorems of fold 406  
30 Compositionality and Category Theory 406  
31 Kleisli composition, flatMap, join, map, unit - implementation and interrelation - V2 updated for Scala 3 396  
32 Sum and Product Types - The Fruit Salad & Fruit Snack Example 394  
33 Folding Cheat Sheet #2 - Programmatic and mathematical definitions of right fold and left fold 392  
34 Folding Cheat Sheet #3 - The universal property of fold 388  
35 Scala 3 enum for a terser Option Monad Algebraic Data Type 386  
36 Drawing Heighway’s Dragon - Part 2 - Recursive Function Simplification - From 2^n Recursive Invocations To n Tail-Recursive Invocations Exploiting Self-Similarity 378  
37 Folding Cheat Sheet #9 - List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate' 376  
38 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 373  
39 Function Applicative for Great Good of Leap Year Function 373  
40 Folding Cheat Sheet #8 - Folding with monoids 373  
41 Scala Left Fold Parallelisation - Three Approaches 367  
42 Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 1 358  
43 From Scala Monadic Effects to Unison Algebraic Effects 357  
44 Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Java 351  
45 Applicative Functor - Part 1 348  
46 Nat, List and Option Monoids - From scratch - Combining and Folding - An example 346  
47 The Sieve of Eratosthenes - Part 2 - Genuine versus Unfaithful Sieve 332  
48 Definitions of Functional Programming 328  
49 Monad Fact #3 322  
50 Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2 317  
51 Functor Laws 308  
52 Point-free or Die - Tacit Programming in Haskell 307  
53 The Open-Closed Principle - Part 2 - The Contemporary Version - An Introduction 302  
54 Left and Right Folds - Comparison of a mathematical definition and a programmatic one 299  
55 A sighting of traverseFilter and foldMap in Practical FP in Scala 296  
56 Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Scala 294  
57 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 3 293  
58 The Monad Fact Series 290  
59 Computer Graphics in Java and Scala - Part 1 290  
60 Quicksort - a whistle-stop tour of the algorithm in five languages and four paradigms 288  
61 Fusing Transformations of Strict Scala Collections with Views 288  
62 Monad as Functor with pair of Natural Transformations 283  
63 Game of Life - Polyglot FP - Haskell and Scala - Part 3 281  
64 A sighting of sequence function in Practical FP in Scala 281  
65 The Expression Problem Part 1 277  
66 Applicative Functor - Part 3 274  
67 Monad Fact #1 274  
68 Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 2 272  
69 ApplicativeError functions handling and recovering from errors: A mnemonic to recall their signatures from their names 271  
70 Folding Unfolded - Part 3 270  
71 Computer Graphics in Java and Scala - Part 1b 270  
72 Folding Unfolded - Part 2 266  
73 Writer Monad for logging execution of functions 264  
74 The Sieve of Eratosthenes - Part 1 264  
75 Folding Unfolded - Part 4 263  
76 Monad Fact #4 262  
77 Monad Fact #2 262  
78 The aggregate function - from sequential and parallel folds to parallel aggregation 260  
79 Arrive at monads by going from composition of pure functions to composition of effectful functions 259  
80 ‘go-to’ general-purpose sequential collections - from Java To Scala 256  
81 Sierpinski Triangle - Polyglot FP for Fun and Profit - Haskell and Scala 256  
82 Folding Cheat Sheet #5 - Folding a list right and left using Cons and Nil results in the identity and reverse functions 255  
83 Natural Transformations 254  
84 A sighting of traverse_ in Practical FP in Scala 252  
85 Monad Fact #6 251  
86 Side by Side - Scala and Java Adaptations of Martin Fowler’s Javascript Refactoring Example 249  
87 Applicative Functor - Part 2 248  
88 Functional Effects - Part 2 247  
89 Folding Unfolded - Part 1 247  
90 Folding Unfolded - Part 5 246  
91 Function Applicative for Great Good of Palindrome Checker Function 235  
92 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 2 234  
93 Monad Transformers - Part 1 233  
94 Functional Effects - Part 1 232  
95 Sequence and Traverse - Part 3 231  
96 State Monad 230  
97 Game of Life - Polyglot FP - Haskell and Scala - Part 2 229  
98 AI Concepts - MCP Neurons 227  
99 Game of Life - Polyglot FP - Haskell and Scala - Part 1 224  
100 Drawing Heighway’s Dragon - Part 4 - Interactive and Animated Dragon Creation 221  
101 Sequence and Traverse - Part 2 218  
102 Monad Fact #5 217  
103 Sequence and Traverse - Part 1 217  
104 Monoids - Part 1 - With examples using Scalaz and Cats 214  
105 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 4 213  
106 Monoids - Part 2 - With examples using Scalaz and Cats 212  
107 Folding Cheat Sheet Series Titles 210  
108 Addendum to `Monads do not Compose` 209  
109 Functor Composition 205  
110 Function Composition - forward composition versus backward composition 199  
111 Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to AI Coding Tool 'Claude Code' 189  
112 Year when lambda functions were introduced in various languages 186  
113 Ad hoc Polymorphism using Type Classes and Cats 179  
114 Symmetry in the interrelation of flatMap/foldMap/traverse and flatten/fold/sequence 177  
115 Monads do not Compose 176  
116 De Morgan's Laws are Monoid Homomorphisms 155  
117 Non-strict functions, bottom, and Scala by-name parameters 125  
118 Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to Github Copilot Chat - using Scala in IntelliJ IDEA 111  
119 The Functional Programming Triad of fold, scan and iterate 84  
120 Defining filter using (a) recursion (b) folding (c) folding with S, B and I combinators (d) folding with applicative functor and identity function 36