All of Basic Category Theory

schedule May 22nd 04:20 - 04:50 PM place Green Room people 174 Interested

Have you ever been puzzled by the suggestion that

data Lens s a = Lens { get :: s -> a, set :: a -> s -> s }

might be in some sense the same as

forall f. Functor f => (a -> f a) -> s -> f s/code>

or, more to the point, how on earth someone ever went about figuring this out in the first place?
Don't know your Kan extensions from your co-ends, your pushouts from your presheaves?

Join me for a scenic adventure tour through the magical land of category theory, stopping off at all the major sights.

We'll learn the basic notions that form the conceptual backbone of category theory,
and how they all fit together.

Category theory has made deep inroads into computer science theory, but in this talk we'll be focused on computer science practice. We'll explore the advantages category theory brings to programming in terms of

  • providing alternate representations for types
  • classifying solutions, or
  • simply providing a clarifying viewpoint and helping to organise our thinking.

In addition this should provide you with the right framework for further exploring category theory, should you so wish.

2 favorite thumb_down thumb_up 0 comments visibility_off  Remove from Watchlist visibility  Add to Watchlist

Outline/Structure of the Talk

I'll cover the fundamentals of, and some applications of, the universal constructions of basic category theory:
* initial objects
* universal properties (universal arrows, universal elements)
* representable functors
* limits
* adjunctions
* monads
* ends
* Kan extensions

Learning Outcome

Attendees will come away with a better idea of how the different concepts and tools of category theory fit together and how to use them.

Target Audience

Functional programmers who are curious about category theory, but feel overwhelmed when they turn to textbooks or resources such as the nLab ( to learn more.

Prerequisites for Attendees

Ideally, participants would already have seen the definition of a category and be familiar with Haskell syntax. I'm also going to assume participants have already been exposed to monads and comonads, and to free constructions (free monoid, free monad) so will only touch on these lightly.

schedule Submitted 1 year ago

Public Feedback

comment Suggest improvements to the Speaker

  • Liked Amy Wong

    Amy Wong - Introduction to recursion scheme

    Amy Wong
    Amy Wong
    Software engineer
    schedule 1 year ago
    Sold Out!
    30 Mins

    Recursion is used extensively in functional programming. It is indeed iteration through nested data structures. Therefore patterns are identified to generalise the nested structure iteration. Using these patterns can factor out the recursion mechanism from application specific logic for code simplicity. That's the purpose of recursion scheme.

    This talk points out different recursion problems are having similar patterns. The recursion scheme is introduced to support these patterns. It will discuss how the common iteration mechanics is separated from the application specific logic by using the patterns, aka morphisms, provided by the recursion scheme. The fundamental pattern, catamorphism, and a few other commonly-used morphisms will be illustrated with some recursion examples.

    The aim of the talk is to give audience an idea of how recursion can be implemented in simple and elegant ways by applying the various morphisms provided by the recursion schemes.

  • Liked Brian McKenna

    Brian McKenna - Teaching functional programming at Atlassian

    Brian McKenna
    Brian McKenna
    Functional Programmer
    schedule 1 year ago
    Sold Out!
    30 Mins

    My team works on Atlassian Marketplace, a project which started 10 years ago and uses Scala, Haskell and Nix. The Marketplace code uses concepts such as applicative functors, monad transformers and lenses. People joining the team mostly learned concepts as they needed to, through experimentation and asking questions.

    Last year we started hosting functional programming classes for more fundamental and broad understanding. We've been using the Data61 (formerly NICTA) Functional Programming Course with a lot of success. This talk will describe how we teach FP, what we've learned about teaching FP and the challenges we face.