SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Just Enough Category Theory for Haskell, part 1

Similaire à Just Enough Category Theory for Haskell, part 1 (20)

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?
 
Java
JavaJava
Java
 

Dernier

Dernier (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 

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