The Comonad Reader
Writing, talks, live coding, and papers: types, (co)monads, substructural logic
- Posts
- 233 from 9 Apr 1999 to 6 Oct 2026
- Posting
- weekly (26 in the last year)
- Kind
- personal blog
- Feed
- https://comonad.com/feed.xml
2026 26
- Stretching the Storage Manager on the JVM
- October archive →
- Turbo Haskell
- A Parsec Full of Rats
- Applicatives
- Cache-Oblivious Data Structures
- Cellular Automata
- Editorials
- Fibonacci
- Free Constructions in Haskell
- Free Monads for Less
- Generalized Hylomorphisms and Chronomorphisms
- Guanxi: Logic Programming in Haskell
- Harmless Algorithms
- Kan Extensions
- Live Coding
- Monads from Comonads
- Moore Machines
- Power Series of Functors
- Recursion Schemes
- Revisiting Matrix Multiplication
- Snippets
- What Constraints Entail
- Zipping and Cozipping
- Explore all series →
- September archive →
2023 1
2022 3
2021 2
2020 1
2019 5
2018 34
- Live Coding — Session 24: Dancing with Decision Diagrams
- Live Coding — Session 23: Dancing Links, Part 2
- Live Coding — Session 22: Dancing Links
- Live Coding — Session 21: Relational Programming, Part 6
- Live Coding — Session 20: Relational Programming, Part 5
- Live Coding — Session 19: Relational Programming, Part 4 (Soul of a New Machine)
- Live Coding — Session 17: Relational Programming, Part 3
- Live Coding — Session 18: Nominal Sets
- Live Coding — Session 16: Relational Programming, Part 2
- Live Coding — Session 15: Back from ICFP
- There and Back Again: Regular and Inverse Semigroups
- Live Coding — Session 14.3: Succinct Serialization, Part 6
- Live Coding — Session 14.2: Succinct Serialization, Part 6
- Live Coding — Session 14.1: Succinct Serialization, Part 6
- Live Coding — Session 13: Succinct Serialization, Part 5
- Live Coding — Session 12: Succinct Serialization, Part 4
- Live Coding — Session 11: Succinct Serialization, Part 3
- Live Coding — Session 10: Succinct Serialization, Part 2
- Live Coding — Session 9: Succinct Serialization, Part 1
- Live Coding — Session 7: More Machines
- Live Coding — Session 8: Succinct Data Structures and Dynamization
- Live Coding — Session 6: CEK Machines
- Live Coding — Session 5.2: Propagators
- Live Coding — Session 5.1: Propagators
- Live Coding — Session 4.2: Q&A
- Live Coding — Session 4.1: Regular and Inverse Semigroups
- Live Coding — Session 3: Authenticated Computation
- Combinators Revisited
- Combinators Revisited
- Live Coding — Session 2.2: Q&A
- Live Coding — Session 2.1: Q&A
- Live Coding — Session 1: Commutativity
- Computational Quadrinitarianism (Curious Correspondences go Cubical)
- The State Comonad
2017 7
2016 14
- VR: Test Framework
- Monad Transformer Lenses
- Monad Homomorphisms
- First-class implementations
- binary-serialize-cbor
- Probabilistic Programming Live-code
- Composing (Music) in Haskell
- Haskell, Startups, and Domain Specific Languages
- Haskell Code Review!
- Undecidable Superclasses
- Dimensional
- On Reflex
- Adjoint Triples
- Desugaring Haskell’s do-Notation into Applicative Operations
2015 25
- Bound
- Propagators
- Servant
- csound-expression
- Fibonacci — Part 2: Open-Ended Fibonacci Search
- Some Rough Notes on Univalent Foundations and B-Systems, Part I
- On-line Lowest Common Ancestor
- Unlifted Structures
- On the unsafety of interleaved I/O
- Discrimination is Wrong: Improving Productivity
- Moore for Less
- Functionally Oblivious (and Succinct)
- Categories of Structures in Haskell
- Skete: Exploring Distributed Package Management
- How to Replace Failure by a Heap of Successes
- Domains, Sets, Traversals and Applicatives
- Fibonacci — Part 1: Leonardo Random Access Lists
- Making Dependent Types Practical
- Reflex: Practical Functional Reactive Programming
- Framing the Discussion with EDSLs
- Free Monoids in Haskell
- Enigmatic Haskell, Haskellish Enigma
- Pure Type Systems
- The free theorem for fmap
- Type Classes vs. the World
2014 14
- Fast Circular Substitution
- Liquid Haskell
- Revisiting Matrix Multiplication — Part V: Heaps of Performance
- Quine: Shader Toys
- Getting a Quick Fix of Comonads
- Youtube 8n5ubDe9FAA
- Letter to a Young Haskell Enthusiast
- On Hask
- CUFP 2014 Call For Presentations
- A Functorial Query Language
- A Quick Introduction To Haskell
- Catamorphisms
- Lightning talks - Dec. 2014
- Stop Treading Water: Learning to Learn
2013 22
- PHOAS For Free
- Cache-Oblivious Data Structures — Part I: Deamortized ST
- Procrustean Mathematics
- Cache-Oblivious Maps
- Functional Reporting
- Cellular Automata — Part III: A World in a Bottle
- Conquering Folds
- Parallel and Incremental CRCs
- Snippets once
- Mandelbrot
- Cellular Automata — Part II: PNGs and Moore
- Episode 1 — On Lenses
- Revisiting Matrix Multiplication — Part VI: A Most Significant Comparison
- Revisiting Matrix Multiplication — Part IV: IntMap!?
- Revisiting Matrix Multiplication — Part III: Extending Vector
- Revisiting Matrix Multiplication — Part II: The Zen of Z-Ordering
- Revisiting Matrix Multiplication — Part I: Bit Shuffling with Lenses and Isomorphisms
- Cellular Automata — Part I: From Theory to Pretty Pictures
- Representing Applicatives
- Japanese “ekmett” Workshop (Part 1 of 2)
- Algebras of Applicatives
- The Ermine programming language
2012 11
- Abstracting with Applicatives
- Lenses, Folds and Traversals
- Natural Deduction, Sequent Calculus and Type Classes
- Unnatural Transformations and Quantifiers
- Working around Hackage Outages
- Making de Bruijn Succ Less
- Mirrored Lenses
- Where’s Waldo?
- Purely Functional Data Structures for On-Line LCA
- Catamorphism Knol
- Wadler’s Law Revisited
2011 16
- Searching Infinity Parametrically
- What Constraints Entail: Part 2
- What Constraints Entail: Part 1
- Homotopy and Directed Type Theory Slides
- Hac Boston!
- A Parsec Full of Rats, Part 2
- A Parsec Full of Rats, Part 1
- Free Modules and Functional Linear Functionals
- A Product of an Imperfect Union
- More on Comonads as Monad Transformers
- Monad Transformers from Comonads
- Monads from Comonads
- Free Monads for Less (Part 3 of 3): Yielding IO
- Free Monads for Less (Part 2 of 3): Yoneda
- Free Monads for Less (Part 1 of 3): Codensity
- Lenses: A Functional Imperative
2010 6
2009 8
2008 25
- The Pointed-Set Comonad
- Still Alive
- Representing Adjunctions
- Zapping Adjunctions
- Linear Bloom Filters
- Kan Extensions III: As Ends and Coends
- Kan Extensions II: Adjunctions, Composition, Lifting
- Kan Extensions
- Elgot (Co)Algebras
- Forgetful Laziness
- Generatingfunctorology
- Towards Formal Power Series for Functors
- Just Fokkinga Abide
- Cozipping
- Zipping and Unzipping Functors
- Deriving Strength from Laziness
- The Cofree Comonad and the Expression Problem
- Dynamorphisms as Chronomorphisms
- Time for Chronomorphisms
- Unnatural Transformations
- Generalized Hylomorphisms
- Monads for Free
- Higher-Order Abstract Syntax à la Carte
- Rotten Bananas
- Elgot Algebras