All blogs / Functional / PL theory
Bartosz Milewski's Programming Cafe
Category Theory, Haskell, Concurrency, C++
- Posts
- 261 from 24 Jul 2008 to 21 Sep 2026
- Posting
- monthly (13 in the last year)
- Kind
- personal blog
- Feed
- https://bartoszmilewski.com/feed/
2026 13
- Tannakian Reconstruction in a Yoneda Equipment
- Yoneda Lemma in Double Categories
- Profunctor Optics
- Tannakian reconstruction
- Tambara Equipment
- Actegories
- Kan Extensions in Double Categories
- Kan Extensions in Haskell
- Tabulation Tribulations
- Bending, Yanking, and Cartesian Squares in Double Categories
- Profunctor Equipment in Haskell
- Profunctor Equipment
- The Axiom of Univalence
2025 10
2024 10
2023 1
2022 1
2021 12
- Co-Presheaf Optics
- Symmetries and Redundancies
- Profunctor Representation of a Polynomial Lens
- Polynomial Lens in Idris
- PolyLens
- Actegories and Lenses
- Optics for the Working Mathematician
- Dependent Optics
- Traversals 3: Existential and Profunctor representations of Traversals
- Traversals 2: Profunctors and Tambara Modules
- Traversals 1: van Laarhoven and Existentials
- Functorio
2020 20
- The Fall of the SKI Civilization
- Benign Data Races Considered Harmful
- Categories for the Working C++ Programmer
- Defunctionalization and Freyd’s Theorem
- Freyd’s Adjoint Functor Theorem
- Weighted Colimits
- Monoidal Catamorphisms
- Guitar Decomposed: 9. Extension Chords
- Guitar Decomposed: 8. Ninth Chords
- Guitar Decomposed: 7. Major Seventh Chords
- Guitar Decomposed: 6. Dominant Seventh Chords
- Guitar Decomposed: 5. Mutating the Third
- Guitar Decomposed: 4. The Grand Unification
- Guitar Decomposed: 3. Moving Sideways
- Guitar Decomposed: 2. Moving Up
- Guitar Decomposed: 1. Weird Logic Behind Tuning
- On Composability
- Terminal Coalgebra as Directed Limit
- Initial Algebra as Directed Colimit
- Math is your insurance policy
2019 8
2018 12
- Open Season on Hylomorphisms
- Keep it Simplex, Stupid!
- Trading FunLists at a Bazaar with Yoneda
- Recursion Schemes for Higher Algebras
- Free Monoid from Free Algebra, Part 2
- Free Monoid from Free Algebra, Part 1
- Free Monoidal Functors, Categorically!
- Life and (Thermal) Death in the Universe
- Free Monoidal Profunctors
- Free Monoidal Functors
- Pointwise Kan Extensions
- The Earth is Flat
2017 15
2016 11
2015 20
- It’s All About Morphisms
- Yoneda Embedding
- Operads, Type Level Nats, and Tic-Tac-Toe
- The Yoneda Lemma
- Representable Functors
- Free Monoids
- From Lenses to Yoneda Embedding
- Using Monads in C++ to Solve Constraints: 4. Refactoring
- Using Monads in C++ to Solve Constraints: 3. The Tale of Two Monads
- Using Monads in C++ to Solve Constraints: 2. The State Monad
- Using Monads in C++ to Solve Constraints: 1. The List Monad
- Category Theory and Declarative Programming
- Limits and Colimits
- Natural Transformations
- Orange Mazurka
- Function Types
- Functoriality
- Functors
- Simple Algebraic Data Types
- Products and Coproducts
2014 21
- Kleisli Categories
- Categories Great and Small
- Types and Functions
- Formula 1: Go Functional!
- Category: The Essence of Composition
- Category Theory for Programmers: The Preface
- Dealing with Benign Data Races the C++ Way
- C++ Ranges are Pure Monadic Goodness
- Benign Data Races
- How to Get Enriched over Magmas and Monoids
- Parametricity: Money for Nothing and Theorems for Free
- Natural Transformations and Ends
- Exponentials, Currying, and Universal Constructions
- The Functional Revolution in C++
- Understanding Limits
- Understanding Products and Universal Constructions
- Getting Lazy with C++
- C++17: I See a Monad in Your Future!
- You Can’t Make an Algebra without Breaking a Few Eggs
- Functional Data Structures in C++: Leftist Heaps
- Functors are Containers
2013 15
- 2013 in review
- Understanding Free Monoids and Universal Constructions
- Functional Data Structures and Concurrency in C++
- Functional Data Structures in C++: Trees
- Functional Data Structures in C++: Lists
- Lenses, Stores, and Yoneda
- Edward C++Hands
- Quantum Homotopy Computer
- Basics of Haskell
- Understanding F-Algebras
- Understanding Yoneda
- Beautiful Concurrency
- The Tao of Monad
- School of Haskell
- The Year of Haskell
2012 13
- Designing the Haskell IDE
- New Approach to Web Programming
- Ten Things You Should Know About Haskell Syntax
- The Functor Pattern in C++
- See my new blog…
- The Future of C++ Concurrency and Parallelism
- The Downfall of Imperative Programming
- Lang.NEXT Trip Report
- Badass Hawking
- Call Your Headhunter!
- The Day the LOLcats Laughed
- Virtual Machines: The Traps and The Thin Hypervisor
- 2011 in review
2011 30
- Virtual Machines: Virtualizing Virtual Memory
- Virtual Memory
- Supercomputing: An Industry in Need of a Revolution
- C++11 Concurrency Series: 9. Condition Variables
- Supercomputing in Seattle
- C++11 Concurrency Series: 8. Data Races
- C++11 Concurrency Tutorial: 7. Mutex, Lock, and Monitor
- C++11 Concurrency Series: 6. Map Reduce
- Async Tasks in C++11: Not Quite There Yet
- C++11 Concurrency Tutorial: 5. Tasks
- C++11 Concurrency Tutorial: Part 4
- C++11 Concurrency Tutorial: 3. Sharing
- C++11 Concurrency Tutorial: Part 2
- C++11 Concurrency Tutorial
- Data Races at the Processor Level
- Boostcon Haskell C++ Videos
- Monads in C++
- The Language of Concurrency Video
- Introduction to Concurrency Webinar
- Concurrency Webinar
- Boostcon Day 4
- Boostcon: Day 3
- Boostcon, Day 2
- Boostcon: Day 1
- Benign Data Races
- Monads for the Curious Programmer: Part 3
- Monads for the Curious Programmer: Part 2
- Monads for the Curious Programmer, Part 1
- Using F#: Sequences and Pipelines
- 2010 in review
2010 8
2009 26
- Unique Objects
- Haskell/C++ Video and Slides
- What Does Haskell Have to Do with C++?
- Ownership Systems against Data Races
- Template Metaprogramming Made Easy (Huh?)
- Spawning a Thread, the D way
- The Anatomy of Reference Counting
- On Actors and Casting
- What’s Wrong with the Thread Object?
- Multithreading Tutorial: Globals
- Race-free Multithreading : Owner polymorphism
- Race-free Multithreading: Ownership
- Race-free Multithreading
- unique_ptr–How Unique is it?
- SharC Infested C
- Cyclone with no Data Races
- Generic Types for Concurrency
- Types for Concurrency
- Futures done right
- Broken promises–C++0x futures
- Message Passing Atoms–MVars
- Message Passing Atoms–Channels
- Message Passing–Sync or Async?
- Immutable Things, where do they all come from?
- The more things change, the more we need “immutable”
- Java Pluggable Types
2008 15
- The Inscrutable C++ Memory Model
- C++ atomics and memory ordering
- Who ordered sequential consistency?
- Who ordered memory fences on an x86?
- Who ordered rvalue references? Part 3
- Who ordered rvalue references? Part 2
- Who ordered rvalue references? Part 1
- Thin Lock vs. Futex
- Threads Don’t Scale, Processes Do
- Thin Lock Implementation
- Sharing and Unsharing of Data Between Threads
- Multicores and Publication Safety
- Musings about the D Memory Model
- Sharing in D
- Thin Locks in D