# Bartosz Milewski's Programming Cafe

Category Theory, Haskell, Concurrency, C++

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Yoneda Lemma in Double Categories

DevFeed: [Yoneda Lemma in Double Categories](<https://devfeed.tech/articles/yoneda-lemma-in-double-categories-28865.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/09/13/yoneda-lemma-in-double-categories/>)

Author: Bartosz Milewski

Published: 2026-09-13T12:23:31Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Category Theory](<https://devfeed.tech/topics/category-theory.md>), [Profunctors](<https://devfeed.tech/topics/profunctors.md>), [String Diagrams](<https://devfeed.tech/topics/string-diagrams.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [double-category](<https://devfeed.tech/tags/double-category.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kan-extensions](<https://devfeed.tech/tags/kan-extensions.md>), [proarrow-equipment](<https://devfeed.tech/tags/proarrow-equipment.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>), [string-diagrams](<https://devfeed.tech/tags/string-diagrams.md>), [yoneda-structure](<https://devfeed.tech/tags/yoneda-structure.md>)

### AI overview

The article explains how to formulate the Yoneda lemma in double categories without directly referring to presheaves or hom-sets. It uses profunctors, universal constructions, Kan extensions, tabulations, 2-cells, and string diagrams to describe the Yoneda embedding and its desired properties, including density and full faithfulness.

### Source excerpt

Working with double categories can be aptly summarized in a meme: Talk to me about sets without mentioning sets. We don't talk about hom-sets, we talk about horizontal units. Secretly, we are visualizing horizontal arrows as profunctors, and the unit of profunctor composition is a hom-functor. Presheaves are defined as -valued functors, so we immediately [...]

## Profunctor Optics

DevFeed: [Profunctor Optics](<https://devfeed.tech/articles/profunctor-optics-28864.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/07/19/profunctor-optics/>)

Author: Bartosz Milewski

Published: 2026-07-19T11:39:02Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [modules](<https://devfeed.tech/topics/modules.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [language](<https://devfeed.tech/tags/language.md>), [lens](<https://devfeed.tech/tags/lens.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [modules](<https://devfeed.tech/tags/modules.md>), [optics](<https://devfeed.tech/tags/optics.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [tambara-modules](<https://devfeed.tech/tags/tambara-modules.md>)

### AI overview

This article explains profunctor optics through Tannakian reconstruction. It presents optics as a category, describes lenses and their composition in Haskell, and introduces Tambara modules as a representation that simplifies optic composition.

### Source excerpt

You may think of Tannakian Reconstruction as an example of redundant encoding. It lets you replace a simple hom-set with a much more complex end that is taken over an entire functor category. Why would anyone want to do it? The answer is simple: composition! Morphisms on the left compose according to the rules of [...]

## Tannakian reconstruction

DevFeed: [Tannakian reconstruction](<https://devfeed.tech/articles/tannakian-reconstruction-28863.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/07/14/tannakian-reconstruction/>)

Author: Bartosz Milewski

Published: 2026-07-14T10:51:53Z

Content type: tutorial

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [structure](<https://devfeed.tech/topics/structure.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [fiber-functor](<https://devfeed.tech/tags/fiber-functor.md>), [tannakian-reconstruction](<https://devfeed.tech/tags/tannakian-reconstruction.md>)

### AI overview

An explanatory article introduces Tannakian reconstruction through an analogy of superimposed photographs, then describes how functors, fiber functors, natural transformations, and ends can recover source-category morphisms.

### Source excerpt

Two friends, Alice and Bob, live in the same city, but on the opposite sides of a wide river. Every night, Bob looks at the lights on the other side and tries to guess, which one belongs to Alice. They come up with a clever arrangement: Alice will turn on her lights for 10 minutes [...]

## Tambara Equipment

DevFeed: [Tambara Equipment](<https://devfeed.tech/articles/tambara-equipment-28862.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/07/11/tambara-equipment/>)

Author: Bartosz Milewski

Published: 2026-07-11T08:13:34Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [modules](<https://devfeed.tech/topics/modules.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [code](<https://devfeed.tech/tags/code.md>), [double-categories](<https://devfeed.tech/tags/double-categories.md>), [double-category](<https://devfeed.tech/tags/double-category.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [modules](<https://devfeed.tech/tags/modules.md>), [optics](<https://devfeed.tech/tags/optics.md>), [proarrow-equipment](<https://devfeed.tech/tags/proarrow-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>), [structure](<https://devfeed.tech/tags/structure.md>), [tambara-modules](<https://devfeed.tech/tags/tambara-modules.md>), [tannakian-reconstruction](<https://devfeed.tech/tags/tannakian-reconstruction.md>), [theory](<https://devfeed.tech/tags/theory.md>), [transformation](<https://devfeed.tech/tags/transformation.md>)

### AI overview

This article explains Tambara modules through category theory and illustrates the concepts with Haskell code. It discusses their relationship to profunctors, monoidal actions, double categories, proarrow equipment, and Tannakian reconstruction.

### Source excerpt

I was originally attracted to category theory when trying to understand Haskell optics. I was puzzled by the van Laarhoven's functor representations and Kmett's use of Tambara modules. By playing Tetris with the Yoneda lemma I was able to make some progress, attacking more and more esoteric topics. With a group of researcher and students [...]

## Actegories

DevFeed: [Actegories](<https://devfeed.tech/articles/actegories-28861.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/06/30/actegories/>)

Author: Bartosz Milewski

Published: 2026-06-30T11:45:46Z

Content type: tutorial

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Programming](<https://devfeed.tech/topics/programming.md>), [Haskell](<https://devfeed.tech/topics/haskell.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [actegories](<https://devfeed.tech/tags/actegories.md>), [category-theory](<https://devfeed.tech/tags/category-theory.md>), [class](<https://devfeed.tech/tags/class.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [lens](<https://devfeed.tech/tags/lens.md>), [optics](<https://devfeed.tech/tags/optics.md>), [programming](<https://devfeed.tech/tags/programming.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This tutorial introduces actegories, explaining their relationship to monoidal categories and their role in programming optics such as lenses, prisms, and traversals. It develops the concepts through Haskell models, including tensor products, unit objects, constraints, associators, unitors, and categorical actions.

### Source excerpt

Previously: Kan Extensions in Double Categories. In programming, actegories play a central role in optics: lenses, prisms, traversals, etc. To understand actegories, let's start with the definition of a monoidal category. Monoidal Category A monoidal category is a category equipped with a tensor product. A tensor product is a functor . We assume that this [...]

## Kan Extensions in Double Categories

DevFeed: [Kan Extensions in Double Categories](<https://devfeed.tech/articles/kan-extensions-in-double-categories-28860.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/06/13/kan-extensions-in-double-categories/>)

Author: Bartosz Milewski

Published: 2026-06-13T12:27:28Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [data type](<https://devfeed.tech/topics/data-type.md>), [implementation](<https://devfeed.tech/topics/implementation.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [data-type](<https://devfeed.tech/tags/data-type.md>), [double-category](<https://devfeed.tech/tags/double-category.md>), [function](<https://devfeed.tech/tags/function.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [kan-extensions](<https://devfeed.tech/tags/kan-extensions.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>)

### AI overview

This article generalizes right and left Kan extensions from functors to profunctors in double categories and presents corresponding Haskell representations. It explains the associated universal and factorization properties, including their computational interpretation.

### Source excerpt

Previously: Kan extensions in Haskell. In a double category that is also a proarrow equipment, we have the ability to bend arrows. In particular, in the definition of the counit of the right Kan extension: we can bend the vertical arrow, replacing it with its horizontal conjoint . In a profunctor equipment, this is just [...]

## Kan Extensions in Haskell

DevFeed: [Kan Extensions in Haskell](<https://devfeed.tech/articles/kan-extensions-in-haskell-28859.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/06/08/kan-extensions-in-haskell/>)

Author: Bartosz Milewski

Published: 2026-06-08T12:31:58Z

Content type: tutorial

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [Reflex FRP](<https://devfeed.tech/topics/reflex-frp.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [category-theory](<https://devfeed.tech/tags/category-theory.md>), [extensions](<https://devfeed.tech/tags/extensions.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [kan-extensions](<https://devfeed.tech/tags/kan-extensions.md>), [programming](<https://devfeed.tech/tags/programming.md>), [types](<https://devfeed.tech/tags/types.md>), [universal-arrows](<https://devfeed.tech/tags/universal-arrows.md>)

### AI overview

This article explains Kan extensions in category theory and translates their definitions and constructions into Haskell. It focuses on right Kan extensions, adjunctions, universal arrows, and pointwise constructions.

### Source excerpt

Previously: Tabulation Tribulations. If you think of functor composition as a form of multiplication, Kan extensions are an attempt to construct inverses of this multiplication. But unlike multiplication, composition is not symmetric, so we have extensions that attempt to undo precomposition, and lifts that do the same for postcomposition. Furthermore, there rarely is a single [...]

## Tabulation Tribulations

DevFeed: [Tabulation Tribulations](<https://devfeed.tech/articles/tabulation-tribulations-28858.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/05/23/tabulation-tribulations/>)

Author: Bartosz Milewski

Published: 2026-05-23T16:05:49Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [double-categories](<https://devfeed.tech/tags/double-categories.md>), [graph](<https://devfeed.tech/tags/graph.md>), [mapping](<https://devfeed.tech/tags/mapping.md>), [object](<https://devfeed.tech/tags/object.md>), [pairs](<https://devfeed.tech/tags/pairs.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>)

### AI overview

This article explains tabulations in double categories by relating them to graphs of functions, relations, and profunctors. It describes the category of elements of a profunctor and introduces tabulation through projections and a universal property, including conditions for morphisms and 2-cells.

### Source excerpt

Previously: Bending, Yanking, and Cartesian Squares in Double Categories. We all know what a graph of a function is: it's a set of pairs , where . Similarly, a graph of a relation is a set of pairs where is related to . A profunctor can be viewed as a proof-relevant relation. So a graph [...]

## Bending, Yanking, and Cartesian Squares in Double Categories

DevFeed: [Bending, Yanking, and Cartesian Squares in Double Categories](<https://devfeed.tech/articles/bending-yanking-and-cartesian-squares-in-double-categories-28857.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/05/18/bending-yanking-and-cartesian-squares-in-double-categories/>)

Author: Bartosz Milewski

Published: 2026-05-19T06:54:15Z

Content type: article

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Category Theory](<https://devfeed.tech/topics/category-theory.md>), [Profunctor Equipment](<https://devfeed.tech/topics/profunctor-equipment.md>), [String Diagrams](<https://devfeed.tech/topics/string-diagrams.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [diagram](<https://devfeed.tech/tags/diagram.md>), [double-categories](<https://devfeed.tech/tags/double-categories.md>), [proarrow-equipment](<https://devfeed.tech/tags/proarrow-equipment.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>), [string-diagrams](<https://devfeed.tech/tags/string-diagrams.md>)

### AI overview

This article explains how string-diagram manipulations in double categories and proarrow equipment support yanking identities and the spider lemma, then introduces Cartesian squares as a universal construction in category theory.

### Source excerpt

Previously: Profunctor Equipment in Haskell. The major advantage of string diagrams is that they provide surprisingly natural language for complex diagram manipulations. The fact that two traditional diagrams are equal can be often described as a permission to bend, yank, or pinch strings in particular ways. They provide visual and often tactile clues to our [...]

## Profunctor Equipment in Haskell

DevFeed: [Profunctor Equipment in Haskell](<https://devfeed.tech/articles/profunctor-equipment-in-haskell-28856.md>)

Original publisher: [Read original article](<https://bartoszmilewski.com/2026/05/16/profunctor-equipment-in-haskell/>)

Author: Bartosz Milewski

Published: 2026-05-16T09:47:40Z

Content type: tutorial

Language: en

Sources: [Bartosz Milewski's Programming Cafe](<https://devfeed.tech/sources/bartosz-milewski-s-programming-cafe.md>)

Topics: [Haskell](<https://devfeed.tech/topics/haskell.md>), [implementation](<https://devfeed.tech/topics/implementation.md>), [Code](<https://devfeed.tech/topics/code.md>), [Library](<https://devfeed.tech/topics/library.md>), [trust](<https://devfeed.tech/topics/trust.md>)

Tags: [category-theory](<https://devfeed.tech/tags/category-theory.md>), [code](<https://devfeed.tech/tags/code.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [haskell](<https://devfeed.tech/tags/haskell.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [library](<https://devfeed.tech/tags/library.md>), [profunctor-equipment](<https://devfeed.tech/tags/profunctor-equipment.md>), [profunctors](<https://devfeed.tech/tags/profunctors.md>), [programming](<https://devfeed.tech/tags/programming.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [types](<https://devfeed.tech/tags/types.md>)

### AI overview

This article presents a toy Haskell implementation of profunctor equipment. It explains how cells, composition, units, companions, and conjoints can be represented using standard library types, natural transformations, existential types, and profunctor composition, while noting limitations that would require dependent types.

### Source excerpt

Previously: Profunctor Equipment. To make things more palatable for programmers, I decided to provide a toy implementation of some of the equipments in Haskell. The advantage of this encoding is that it can be verified by the compiler, and I still trust the compiler more than I trust the AI. A more adequate implementation would [...]