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

# Title Downloads  
1 The Expression Problem Part 2 2523  
2 The Nature of Complexity in John Ousterhout’s Philosophy of Software Design 1757  
3 The Debt Metaphor - Ward Cunningham in his 2009 YouTube video 1517  
4 Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid 1248  
5 Drawing Heighway’s Dragon - Part 3 - Simplification Through Separation of Concerns - Rotation Without Matrix Multiplication 1053  
6 Kleisli Composition 915  
7 The Open-Closed Principle - Part 1 - The Original Version 738  
8 Test Doubles - Terminology, Definitions and Illustrations - with Examples - Part 1 700  
9 Monad Laws Must Be Checked 669  
10 List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate' 656  
11 Folding Cheat Sheet #6 - Left and right folds and tail recursion 655  
12 N-Queens Combinatorial Puzzle meets Cats 619  
13 Functional Core and Imperative Shell - Game of Life Example - Haskell and Scala 602  
14 Tagless Final Encoding - Algebras and Interpreters and also Programs 554  
15 Folding Cheat Sheet #1 - Folding over recursively defined data structures for natural numbers and lists 534  
16 The Functional Programming Triad of Folding, Scanning and Iteration - A first example in Scala and Haskell 520  
17 Fibonacci Function Gallery - Part 2 495  
18 Lambda Expressions and Java 8 - Lambda Calculus, Lambda Expressions, Syntactic Sugar, First Class Functions 494  
19 Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 1 482  
20 The Functional Programming Triad of map, filter and fold 475  
21 The Uniform Access Principle 464  
22 Drawing Heighway’s Dragon - Part 1 - Recursive Function Rewrite - From Imperative Style in Pascal 64 To Functional Style in Scala 3 448  
23 Algebraic Data Types for Data Oriented Programming - From Haskell and Scala to Java 444  
24 A Sighting of filterA in Typelevel Rite of Passage 443  
25 From Subtype Polymorphism To Typeclass-based Ad hoc Polymorphism - An Example 436  
26 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 1 428  
27 Fibonacci Function Gallery - Part 1 426  
28 Compositionality and Category Theory 424  
29 Hand Rolled Applicative User Validation Code Kata 415  
30 Sum and Product Types - The Fruit Salad & Fruit Snack Example 410  
31 Folding Cheat Sheet #7 - The three duality theorems of fold 409  
32 Kleisli composition, flatMap, join, map, unit - implementation and interrelation - V2 updated for Scala 3 407  
33 Folding Cheat Sheet #2 - Programmatic and mathematical definitions of right fold and left fold 406  
34 Folding Cheat Sheet #3 - The universal property of fold 398  
35 Drawing Heighway’s Dragon - Part 2 - Recursive Function Simplification - From 2^n Recursive Invocations To n Tail-Recursive Invocations Exploiting Self-Similarity 395  
36 Scala 3 enum for a terser Option Monad Algebraic Data Type 394  
37 Folding Cheat Sheet #9 - List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate' 383  
38 Function Applicative for Great Good of Leap Year Function 381  
39 Folding Cheat Sheet #8 - Folding with monoids 379  
40 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 379  
41 Scala Left Fold Parallelisation - Three Approaches 377  
42 From Scala Monadic Effects to Unison Algebraic Effects 371  
43 Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Java 369  
44 Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 1 368  
45 Applicative Functor - Part 1 356  
46 Nat, List and Option Monoids - From scratch - Combining and Folding - An example 355  
47 Definitions of Functional Programming 344  
48 The Sieve of Eratosthenes - Part 2 - Genuine versus Unfaithful Sieve 343  
49 Monad Fact #3 338  
50 Scala 3 by Example - Algebraic Data Types for Domain Driven Design - Part 2 329  
51 Functor Laws 321  
52 Point-free or Die - Tacit Programming in Haskell 317  
53 The Open-Closed Principle - Part 2 - The Contemporary Version - An Introduction 314  
54 Left and Right Folds - Comparison of a mathematical definition and a programmatic one 306  
55 Refactoring: A First Example - Martin Fowler’s First Example of Refactoring, Adapted to Scala 303  
56 Fusing Transformations of Strict Scala Collections with Views 303  
57 A sighting of traverseFilter and foldMap in Practical FP in Scala 303  
58 Computer Graphics in Java and Scala - Part 1 301  
59 The Monad Fact Series 298  
60 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 3 297  
61 Game of Life - Polyglot FP - Haskell and Scala - Part 3 296  
62 Monad as Functor with pair of Natural Transformations 294  
63 Quicksort - a whistle-stop tour of the algorithm in five languages and four paradigms 294  
64 A sighting of sequence function in Practical FP in Scala 291  
65 Combinatorial Interview Problems with Backtracking Solutions - from Procedural to Functional Programming - Part 2 286  
66 ApplicativeError functions handling and recovering from errors: A mnemonic to recall their signatures from their names 285  
67 Monad Fact #1 284  
68 Applicative Functor - Part 3 283  
69 Folding Unfolded - Part 3 283  
70 The Expression Problem Part 1 278  
71 Folding Unfolded - Part 2 278  
72 Computer Graphics in Java and Scala - Part 1b 277  
73 Folding Unfolded - Part 4 277  
74 Monad Fact #4 276  
75 Writer Monad for logging execution of functions 273  
76 Monad Fact #2 271  
77 The Sieve of Eratosthenes - Part 1 271  
78 Arrive at monads by going from composition of pure functions to composition of effectful functions 270  
79 Natural Transformations 270  
80 ‘go-to’ general-purpose sequential collections - from Java To Scala 266  
81 The aggregate function - from sequential and parallel folds to parallel aggregation 265  
82 Folding Cheat Sheet #5 - Folding a list right and left using Cons and Nil results in the identity and reverse functions 261  
83 Sierpinski Triangle - Polyglot FP for Fun and Profit - Haskell and Scala 260  
84 A sighting of traverse_ in Practical FP in Scala 260  
85 Folding Unfolded - Part 1 258  
86 Applicative Functor - Part 2 255  
87 Monad Fact #6 255  
88 Side by Side - Scala and Java Adaptations of Martin Fowler’s Javascript Refactoring Example 253  
89 Folding Unfolded - Part 5 252  
90 Functional Effects - Part 2 250  
91 Monad Transformers - Part 1 248  
92 Function Applicative for Great Good of Palindrome Checker Function 243  
93 Functional Effects - Part 1 242  
94 AI Concepts - MCP Neurons 240  
95 Game of Life - Polyglot FP - Haskell and Scala - Part 2 240  
96 Sequence and Traverse - Part 3 238  
97 State Monad 238  
98 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 2 237  
99 Sequence and Traverse - Part 2 235  
100 Sequence and Traverse - Part 1 230  
101 Monad Fact #5 229  
102 Drawing Heighway’s Dragon - Part 4 - Interactive and Animated Dragon Creation 228  
103 Game of Life - Polyglot FP - Haskell and Scala - Part 1 225  
104 Monoids - Part 1 - With examples using Scalaz and Cats 223  
105 Monoids - Part 2 - With examples using Scalaz and Cats 221  
106 Folding Cheat Sheet Series Titles 220  
107 N-Queens Combinatorial Problem - Polyglot FP for Fun and Profit – Haskell and Scala - Part 4 220  
108 Addendum to `Monads do not Compose` 217  
109 Functor Composition 216  
110 Function Composition - forward composition versus backward composition 213  
111 Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to AI Coding Tool 'Claude Code' 203  
112 Year when lambda functions were introduced in various languages 196  
113 Ad hoc Polymorphism using Type Classes and Cats 187  
114 Monads do not Compose 186  
115 Symmetry in the interrelation of flatMap/foldMap/traverse and flatten/fold/sequence 182  
116 De Morgan's Laws are Monoid Homomorphisms 160  
117 Imperative Bowling Kata - 20 Years On - Delegating Menial Tasks to Github Copilot Chat - using Scala in IntelliJ IDEA 136  
118 Non-strict functions, bottom, and Scala by-name parameters 132  
119 The Functional Programming Triad of fold, scan and iterate 109  
120 Defining filter using (a) recursion (b) folding (c) folding with S, B and I combinators (d) folding with applicative functor and identity function 46