All of Basic Category Theory
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.
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 (https://ncatlab.org/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.
Video
Links
Bartosz Milewski's excellent Category Theory for Programmers would make ideal further reading for participants to deepen their understanding.
schedule Submitted 5 years ago
People who liked this proposal, also liked:
-
keyboard_arrow_down
Amy Wong - Introduction to recursion scheme
30 Mins
Talk
Intermediate
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.
-
keyboard_arrow_down
Brian McKenna - Teaching functional programming at Atlassian
30 Mins
Talk
Beginner
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.