SlideShare a Scribd company logo
1 of 29
Download to read offline
Just Enough Category Theory
for Haskell (part 1)
Heejong Ahn
(github.com/heejongahn)
Tabel of Contents
• Purpose and Focus
• Category
• Functor
Purpose and Focus
Purpose
• “Do I have to read this thick math book with stubborn, dull cover
thoroughly, just to write a program in Haskell?”
• You don’t.
• We’ve already gone through 5 weeks of exercises without any book!
• Yet, as Haskell borrowed a lot of its core concepts from category
theory, some knowledge on it might help you a lot.
Focus
• I’ll try to avoid analogues, which is often used to give an intuition.
• That’s because sometimes those keep you from getting actual, clear
idea about a concept.
• Instead, I’d rather stick to mathematical terms and laws.
Disclaimer
• I’ve never been excellent in math.
• Haven’t been really passionate about it, neither.
• Though I’ve put a huge amount of time, there will be lots of unclear,
even wrong spots throughout the slides.
• If you find any, please feel free to interrupt and correct me ☺
Category
Category
Category is just a collection which has:
• A collection of objects
• A collection of morphisms
• A notion of composition
X Y
Z
f
g
g ◦ f
Category
Category is just a collection which has:
• A collection of objects
• A collection of morphisms
• A notion of composition
X Y
Z
f
g
g ◦ f
Category
Category is just a collection which has:
• A collection of objects
• A collection of morphisms
• A notion of composition
X Y
Z
f
g
g ◦ f
source object X
target object Y
Category
Category is just a collection which has:
• A collection of objects
• A collection of morphisms
• A notion of composition
X Y
Z
f
g
g ◦ f
Category Example
• Category of sets(Set) is a category.
• Set has a collection of objects, which is, well, all sets.
• Set has a collection of morphisms, which is a collection of functions
from a set to another set.
• Set has a notion of composition, which is just a function composition.
Category Example (cont’d)
• Category of groups(Grp) is also a category.
• Grp has a collection of objects, which is, again, all groups.
• Grp has a collection of morphisms, which is a collection of functions
which preserves group operation (the group homomorphism)
• Grp has a notion of composition, which is just a function composition.
Category Laws
Categories must meet these requirements :
• Composition of mophisms should be associative
• For every object in a category, there must be an identity morphism
Hask
• Hask, the category of Haskell types and functions, is our main topic.
• Speaking of category, we’ve heard that every category must have…
• Objects, morphisms, and composition!
Hask (cont’d)
• Objects : Haskell types
• Morphisms : Haskell functions
• Composition : (.)
• We know haskell functions are associative, and we have id.
• On top of that, we define two functions f and g as the same
morphism if f x = g x for all x. (Why? Is it really needed?)
Functor
Functor
• “In mathematics, a functor is a type of mapping between categories
which is applied in category theory. Functors can be thought of as
homomorphisms between categories.” (Wikipedia)
• Sorry, what?
Functor (cont’d)
•
“In mathematics, a functor is a type of mapping between categories which is applied in category theory.
Functors can be thought of as homomorphisms between categories.”
• To map a category to another category, we have to map…
• Objects, Morphisms, and Composition!
• Composition is mostly trivial for this case, so we won’t focus on it.
Functor Laws
Functors must meet these requirements :
• Functor must map identity of an object to that of a mapped object
• Functor must distribute over morphism composition
Functor Example
• Diagram of a functor from
category C to category D.
• You can see:
• Object mapping (yellow)
• Morphism mapping (purple)
Functor in Hask
• What does Maybe do?
• It turns a Hask object(type), T, to another object, Maybe T.
Functor in Hask (cont’d)
• What does fmap do, when applied to a Maybe instance?
• It turns a Hask morphism(function), with type (A -> B),

to another morphism, with type (Maybe A -> Maybe B).
Functor in Hask (cont’d)
• So as we have
• Type constructor, which maps objects between categories
• fmap, which maps morphisms between categories
• Maybe is an instance of Functor - it maps Hask to its subcategory,
a category of Maybe types and functions defined on Maybe types.
Functor in Hask (cont’d)
• Same logic applies to any Functor types.
• Both Functor laws are fulfilled for any functor on Hask.
• fmap id = id
• fmap (f . g) = (fmap f) . (fmap g)
Summary
Summary
• We’ve talked about Hask, the category of Haskell types and functions.
• (types, functions, (.) ) corresponds to 

(objects, morphisms, composition), respectively.
• Functor typeclasses works as Functor in category theory, that is, a
mapping between two different categories.
• Next topics : Monoid, Applicative Functor, Monad, …
Appendix
References
• https://en.wikibooks.org/wiki/Haskell/Category_theory
• https://wiki.haskell.org/Hask
• https://en.wikipedia.org/wiki/Category_theory
• https://en.wikipedia.org/wiki/Category_(mathematics)
• https://en.wikipedia.org/wiki/Group_(mathematics)
• https://en.wikipedia.org/wiki/Group_homomorphism
• https://en.wikipedia.org/wiki/Category_of_sets
• https://en.wikipedia.org/wiki/Category_of_groups
• https://wiki.haskell.org/Typeclassopedia

More Related Content

What's hot (9)

Funciones racionales
Funciones racionalesFunciones racionales
Funciones racionales
 
Haskell study 8
Haskell study 8Haskell study 8
Haskell study 8
 
Aula 04 séries estatísticas
Aula 04   séries estatísticasAula 04   séries estatísticas
Aula 04 séries estatísticas
 
MATERIAL DE Probabilidade
MATERIAL DE ProbabilidadeMATERIAL DE Probabilidade
MATERIAL DE Probabilidade
 
1 ano função afim
1 ano   função afim1 ano   função afim
1 ano função afim
 
3.2 Logarithmic Functions
3.2 Logarithmic Functions3.2 Logarithmic Functions
3.2 Logarithmic Functions
 
Bab 03 statistika
Bab 03   statistikaBab 03   statistika
Bab 03 statistika
 
Variaveis+aleatorias
Variaveis+aleatoriasVariaveis+aleatorias
Variaveis+aleatorias
 
6878583 manajemen-keuangan
6878583 manajemen-keuangan6878583 manajemen-keuangan
6878583 manajemen-keuangan
 

Similar to Just Enough Category Theory for Haskell, part 1

Similar to Just Enough Category Theory for Haskell, part 1 (20)

Object Oriented Programming.pptx
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptx
 
Java interfaces
Java interfacesJava interfaces
Java interfaces
 
[OOP - Lec 04,05] Basic Building Blocks of OOP
[OOP - Lec 04,05] Basic Building Blocks of OOP[OOP - Lec 04,05] Basic Building Blocks of OOP
[OOP - Lec 04,05] Basic Building Blocks of OOP
 
Javasession7
Javasession7Javasession7
Javasession7
 
Lecture 1 - Objects and classes
Lecture 1 - Objects and classesLecture 1 - Objects and classes
Lecture 1 - Objects and classes
 
OOP in JS
OOP in JSOOP in JS
OOP in JS
 
Enumerables
EnumerablesEnumerables
Enumerables
 
Taxonomy: Do I Need One
Taxonomy: Do I Need OneTaxonomy: Do I Need One
Taxonomy: Do I Need One
 
Taxonomy
TaxonomyTaxonomy
Taxonomy
 
UML-class_diagram.ppt
UML-class_diagram.pptUML-class_diagram.ppt
UML-class_diagram.ppt
 
UML-class diagram for beginners to adance.ppt
UML-class diagram for beginners to adance.pptUML-class diagram for beginners to adance.ppt
UML-class diagram for beginners to adance.ppt
 
Java Hands-On Workshop
Java Hands-On WorkshopJava Hands-On Workshop
Java Hands-On Workshop
 
Tutorial spyout
Tutorial spyoutTutorial spyout
Tutorial spyout
 
Code Like Pythonista
Code Like PythonistaCode Like Pythonista
Code Like Pythonista
 
C++ Introduction brown bag
C++ Introduction brown bagC++ Introduction brown bag
C++ Introduction brown bag
 
Java Lecture5.pptx
Java Lecture5.pptxJava Lecture5.pptx
Java Lecture5.pptx
 
Object Oriented Programming Tutorial.pptx
Object Oriented Programming Tutorial.pptxObject Oriented Programming Tutorial.pptx
Object Oriented Programming Tutorial.pptx
 
mahout-cf
mahout-cfmahout-cf
mahout-cf
 
Chapter 5 searching and sorting handouts with notes
Chapter 5   searching and sorting handouts with notesChapter 5   searching and sorting handouts with notes
Chapter 5 searching and sorting handouts with notes
 
Chemical features: how do we describe a compound to a computer?
Chemical features: how do we describe a compound to a computer?Chemical features: how do we describe a compound to a computer?
Chemical features: how do we describe a compound to a computer?
 

More from Heejong Ahn (7)

플렉스팀 프론트엔드 기술 스택의 이해: `lint`, `build`, `run`
플렉스팀 프론트엔드 기술 스택의 이해: `lint`, `build`, `run`플렉스팀 프론트엔드 기술 스택의 이해: `lint`, `build`, `run`
플렉스팀 프론트엔드 기술 스택의 이해: `lint`, `build`, `run`
 
프로그래머의 배움
프로그래머의 배움프로그래머의 배움
프로그래머의 배움
 
Being a Multiplier
Being a MultiplierBeing a Multiplier
Being a Multiplier
 
Hello, React Hooks!
Hello, React Hooks!Hello, React Hooks!
Hello, React Hooks!
 
TypeScript와 Flow: 
자바스크립트 개발에 정적 타이핑 도입하기
TypeScript와 Flow: 
자바스크립트 개발에 정적 타이핑 도입하기TypeScript와 Flow: 
자바스크립트 개발에 정적 타이핑 도입하기
TypeScript와 Flow: 
자바스크립트 개발에 정적 타이핑 도입하기
 
Pure UI
Pure UIPure UI
Pure UI
 
더 나은 팀을 위하여
더 나은 팀을 위하여더 나은 팀을 위하여
더 나은 팀을 위하여
 

Recently uploaded

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 

Just Enough Category Theory for Haskell, part 1

  • 1. Just Enough Category Theory for Haskell (part 1) Heejong Ahn (github.com/heejongahn)
  • 2. Tabel of Contents • Purpose and Focus • Category • Functor
  • 4. Purpose • “Do I have to read this thick math book with stubborn, dull cover thoroughly, just to write a program in Haskell?” • You don’t. • We’ve already gone through 5 weeks of exercises without any book! • Yet, as Haskell borrowed a lot of its core concepts from category theory, some knowledge on it might help you a lot.
  • 5. Focus • I’ll try to avoid analogues, which is often used to give an intuition. • That’s because sometimes those keep you from getting actual, clear idea about a concept. • Instead, I’d rather stick to mathematical terms and laws.
  • 6. Disclaimer • I’ve never been excellent in math. • Haven’t been really passionate about it, neither. • Though I’ve put a huge amount of time, there will be lots of unclear, even wrong spots throughout the slides. • If you find any, please feel free to interrupt and correct me ☺
  • 8. Category Category is just a collection which has: • A collection of objects • A collection of morphisms • A notion of composition X Y Z f g g ◦ f
  • 9. Category Category is just a collection which has: • A collection of objects • A collection of morphisms • A notion of composition X Y Z f g g ◦ f
  • 10. Category Category is just a collection which has: • A collection of objects • A collection of morphisms • A notion of composition X Y Z f g g ◦ f source object X target object Y
  • 11. Category Category is just a collection which has: • A collection of objects • A collection of morphisms • A notion of composition X Y Z f g g ◦ f
  • 12. Category Example • Category of sets(Set) is a category. • Set has a collection of objects, which is, well, all sets. • Set has a collection of morphisms, which is a collection of functions from a set to another set. • Set has a notion of composition, which is just a function composition.
  • 13. Category Example (cont’d) • Category of groups(Grp) is also a category. • Grp has a collection of objects, which is, again, all groups. • Grp has a collection of morphisms, which is a collection of functions which preserves group operation (the group homomorphism) • Grp has a notion of composition, which is just a function composition.
  • 14. Category Laws Categories must meet these requirements : • Composition of mophisms should be associative • For every object in a category, there must be an identity morphism
  • 15. Hask • Hask, the category of Haskell types and functions, is our main topic. • Speaking of category, we’ve heard that every category must have… • Objects, morphisms, and composition!
  • 16. Hask (cont’d) • Objects : Haskell types • Morphisms : Haskell functions • Composition : (.) • We know haskell functions are associative, and we have id. • On top of that, we define two functions f and g as the same morphism if f x = g x for all x. (Why? Is it really needed?)
  • 18. Functor • “In mathematics, a functor is a type of mapping between categories which is applied in category theory. Functors can be thought of as homomorphisms between categories.” (Wikipedia) • Sorry, what?
  • 19. Functor (cont’d) • “In mathematics, a functor is a type of mapping between categories which is applied in category theory. Functors can be thought of as homomorphisms between categories.” • To map a category to another category, we have to map… • Objects, Morphisms, and Composition! • Composition is mostly trivial for this case, so we won’t focus on it.
  • 20. Functor Laws Functors must meet these requirements : • Functor must map identity of an object to that of a mapped object • Functor must distribute over morphism composition
  • 21. Functor Example • Diagram of a functor from category C to category D. • You can see: • Object mapping (yellow) • Morphism mapping (purple)
  • 22. Functor in Hask • What does Maybe do? • It turns a Hask object(type), T, to another object, Maybe T.
  • 23. Functor in Hask (cont’d) • What does fmap do, when applied to a Maybe instance? • It turns a Hask morphism(function), with type (A -> B),
 to another morphism, with type (Maybe A -> Maybe B).
  • 24. Functor in Hask (cont’d) • So as we have • Type constructor, which maps objects between categories • fmap, which maps morphisms between categories • Maybe is an instance of Functor - it maps Hask to its subcategory, a category of Maybe types and functions defined on Maybe types.
  • 25. Functor in Hask (cont’d) • Same logic applies to any Functor types. • Both Functor laws are fulfilled for any functor on Hask. • fmap id = id • fmap (f . g) = (fmap f) . (fmap g)
  • 27. Summary • We’ve talked about Hask, the category of Haskell types and functions. • (types, functions, (.) ) corresponds to 
 (objects, morphisms, composition), respectively. • Functor typeclasses works as Functor in category theory, that is, a mapping between two different categories. • Next topics : Monoid, Applicative Functor, Monad, …
  • 29. References • https://en.wikibooks.org/wiki/Haskell/Category_theory • https://wiki.haskell.org/Hask • https://en.wikipedia.org/wiki/Category_theory • https://en.wikipedia.org/wiki/Category_(mathematics) • https://en.wikipedia.org/wiki/Group_(mathematics) • https://en.wikipedia.org/wiki/Group_homomorphism • https://en.wikipedia.org/wiki/Category_of_sets • https://en.wikipedia.org/wiki/Category_of_groups • https://wiki.haskell.org/Typeclassopedia