Cours « 18.S097: Programming with Categories / IAP 2020 » MIT,

Brendan Fong, Bartosz Milewski, and David Spivak

« In this course we explain how category theory—a branch of mathematics known for its ability to organize the key abstractions that structure much of the mathematical universe—has become useful for writing elegant and maintainable code. In particular, we’ll use examples from the Haskell programming language to motivate category-theoretic constructs, and then explain these constructs from a more abstract and inclusive viewpoint. Hands-on programming exercises will be used to demonstrate categorical ideas like “the universal property of products” in working Haskell code. A rough list of topics includes:

· Sets, types, categories, functors, natural transformations

· Universal constructions and associated data types

· Adjunctions and cartesian closed categories

· Algebras, catamorphisms, anamorphisms

· Monads, comonads, Kleisli arrows

· Monoids, monoidal categories, lax monoidal functors,

applicatives

· Profunctors, (co)ends, optics »