SlideShare una empresa de Scribd logo
1 de 105
Applied category theory
The emerging science of compositionality @KenScambler
Category theory
From “Seven Sketches of Compositionality”
Fong & Spivak (2018)
Applied category theory
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
Applied category theory
• Emerging field!
• Explosion of papers, research, development in last 5 years
• Builds a common vocabulary of composition across
disciplines
• Enables intuitive, precise visual representations
Brand new ACT Journal
Brand new ACT Book
ACT Topics & papers
Q: Is functional programming applied
category theory?
Q: Is functional programming applied
category theory?
A: Yes! (…arguably)
Plan
• I want to put applied category theory on your roadmap
• The big idea: compositionality
• Case study: Complex adaptive system design: military search & rescue
• Four concepts of composition:
• Monoids
• Categories
• Operads
• Monoidal categories
• Two graphical languages:
• String diagrams
• Wiring diagrams
Compositionality
The meaning of a complex expression is determined by:
1. The meaning of the constituent parts
2. The rules for how those parts are combined
Frege’s Principle of Compositionality
Making big things
Compositionality lets us
Making big things
out of little things
Compositionality lets us
Compositionality lets us
Making big things
out of little things
preserving guarantees
Compositionality applied
• Little programs that work
BIG programs that work?
• Little electric circuits that work
BIG electric circuits that work?
• Little Feynman diagrams that describe real physics
BIG Feynman diagrams that describe real physics?
• Little resource plans that are feasible
BIG resource plans that are feasible?
• Little networks of agents that can solve problems
BIG networks of agents that can solve problems?
Compositionality distilled - monoids
c d
e
f
h
j
a
b
i
g
a b
a b
Compose any two
ab
Associativity – no need for brackets
a b c
Associativity – no need for brackets
a b c
Associativity – no need for brackets
a b c
Associativity – no need for brackets
a b c
Associativity – no need for brackets
abc
With associativity
abc = a b c
Just the sum of
its parts with
Without associativity
+ orabc = a b c
Uh-oh! We need
external data
Identity – doesn’t do anything when you
compose
a
Identity – doesn’t do anything when you
compose
a
Identity – doesn’t do anything when you
compose
a
Compositionality distilled - categories
c d
e
f
h
j
a
b
i
g
a b
The building
blocks are called
morphisms
The colours are
called objects
a b
Can only
compose when
the colours match
ab
The middle bit
disappears
a b
Associativity – no need for brackets
c
a b
Associativity – no need for brackets
c
a b
Associativity – no need for brackets
c
a b
Associativity – no need for brackets
c
abc
Associativity – no need for brackets
a
Identities – don’t do anything when you
compose
a
Identities – don’t do anything when you
compose
a
Identities – don’t do anything when you
compose
Case study: Complex Adaptive System Design
from
“Complex Adaptive System Design” blog posts by John C. Baez
(2016-2019)
“Network Models” by Baez, Foley, Moeller, Pollard (2017)
Military research: search & rescue
• Systems of systems
• Many different kinds of networks
• Complex realtime behaviour
• How to connect them all?
Helo
1
Target
1Port
1
Helicopter knows
the target and
home base
In comms
range
In comms
range
My port
Intent to rescue
Helo
1
UAV
1
Target
1
UAV knows the
target, and the
helicopter as a
home base
In comms
range
Intent to rescue
My port
Overlay the
networks
We now have a
bigger network
working together
Helo
1
Target
1Port
1
My port
Intent to rescue
UAV
1
My port
In comms
range
In comms
range
In comms
range
Intent to rescue
Helo
network
UAV
network
Overlaying is monoidal; you
can always overlay
Helo
network
UAV
network
Overlaying is monoidal; you
can always overlay
over
lay
Combined
network
Overlaying is monoidal; you
can always overlay
How to sew together unrelated networks?
Helo
1
UAV
1
Target
1
UAV
2
UAV
3
UAV
5
Rescue-Scene
UAV
4
In comms
range
In comms
range
UAV-Search-Net
Helo
2
Homebase
Intent to rescue
My port
Havana
1 2
3
4 5
6 7
8
9
How to sew together unrelated networks?
“Take 3 networks of 3, 4
and 2 vertices; return a
network of 9 vertices”
Intent to rescue
Helo
1
UAV
1
Target
1
UAV
2
UAV
3
UAV
5
UAV
4
In comms
range
In comms
rangeHelo
2
In comms
range
Intent to
rescue
My port
Intent to
rescue
Havana
Is that a category?
Network-1 Network-2 Network-3
Nope!
You can’t compose the
networks themselves.
Network-1 Network-2 Network-3
Morphisms with lots of inputs?
The ”type” is the number
of vertices expected in
subnetworks
“Take 3 networks of 3, 4 and
2 vertices; return a network
of 9 vertices”
3
4
2
9
Compositionality distilled – operads
a
c
b
d
a
cb
a
cb
a
cb
a
cb
abc
a
a
a
a
Obvious example: types & functions
receiveInvoice
User
Invoice
Signature
Receipt
storeReceipt
Receipt
Shoebox
Shoebox
login
Username
Password
User
receiveInvoiceInvoice
Signature
storeReceipt
Shoebox
Shoebox
login
Username
Password
Invoice
Signature
fullInvoiceFlow
Shoebox
Shoebox
Username
Password
def fullInvoiceFlow(username,
password,
invoice,
signature,
shoebox) {
user = login(username, password)
receipt = receiveInvoice(user, invoice, signature)
return storeReceipt(receipt, shoebox)
}
Mapping it to reality
Helicopter
Port
UAV
Target
my port
Intent to rescue
Comms channel
Havana
Rescue-Scene
UAV-Search-Net
Homebase
Mapping it to reality
Helicopter
Port
UAV
Target
my port
Intent to rescue
Comms channel
Havana Rescue-Scene := ...
UAV-Search-Net := ...
Homebase := ...
joinNetworks(Rescue-Scene,
UAV-Search-Net,
Homebase)
To actually use an operad, translate
it to the operad of sets & functions,
preserving composition & identity
From “Seven Sketches of Compositionality”
Fong & Spivak (2018)
String diagrams
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
morphisms
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
objects
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
egg
sugar
unbaked
pieadd
meringue
composition
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
tensoring
Tensoring forms a monoid
(up to isomorphism)
lemon butter sugar
make
lemon filling
… on the objects of the category
lemon ⨂ butter ⨂ sugar
lemon
filling
Monoidal categories
Category C
Tensor operation
⨂ : (object, object) -> object
such that (a ⨂ b) ⨂ c ≃ a ⨂ (b ⨂ c)
Unit object
I : object
such that a ⨂ I ≃ I ⨂ a ≃ a
Monoidal categories
f g
x y y z
f g
x y z
f
g
x y
y z
x y
y z
f ⨂ g=
Horizontal composition Vertical composition
x ⨂ y
f ⨂ g=
y ⨂ z
Diagrams inside diagrams
prepare lemon meringue pie
make
lemon
filling
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
Make lemon filling
lemon
butter
sugar
Blend
yolk
Beat
Combine
lemon
filling
Diagrams inside diagrams
prepare lemon meringue pie
fill crust
make
meringue
separate egg
prepared crust
lemon
butter
sugar
yolk
egg
white
sugar
meringue
lemon
filling
unbaked
lemon
pie unbaked
pieadd
meringue
Blend
Beat
Combine
oven
unbaked
pie
baked pie
oven
prepare lemon meringue pie
bake pie
prepare lemon meringue pie
oven
unbaked
pie
baked pie
oven
bake pie
Surprise! It’s another operad
Lemon Meringue Pie operad
prepare lemon
meringue pie
sugar ⨂ white  meringue
prepared crust ⨂ lemon ⨂ butter ⨂
sugar ⨂ egg ⨂ sugar  unbaked pie
egg  yolk ⨂ white
lemon ⨂ butter ⨂ sugar ⨂
yolk  lemon filling
prepared crust ⨂ lemon filling
 unbaked lemon pie
unbaked lemon pie ⨂
meringue  unbaked pie
From “Seven Sketches of Compositionality”
Fong & Spivak (2018)
String diagrams in software architecture
• Fantastic for software design
• I’ve used them for years to train junior & senior developers
• Modularity, boundaries
Simon Brown
Level 1
Level 1
Level 2
Level 1
Level 2
Level 3
Level 1
Level 2
Level 3
Level 4
Operad! (maybe)
Operad of wiring diagrams
from
“The operad of wiring diagrams: formalizing a graphical
language for databases, recursion and plug-and-play circuits”
by David I. Spivak (2013)
Inputs x1, x2, x3
Input types
{s,r,t}
{w, x, y, z}
{u, v}
Output type
{a,b,c,d,e}
Compositional SQL queries
SELECT L.student, L.address
FROM attends a1, gender g1, attends a2, gender g2, lives L
WHERE a1.student=g1.student AND a2.student=g2.student
AND L.student=g1.student AND a1.course=a2.course
AND g1.gender=‘male’ AND g2.gender=‘female’
SELECT L.student, L.address
FROM attends a1, gender g1, attends a2, gender g2, lives L
WHERE a1.student=g1.student AND a2.student=g2.student
AND L.student=g1.student AND a1.course=a2.course
AND g1.gender=‘male’ AND g2.gender=‘female’
SELECT L.student, L.address
FROM attends a1, gender g1, attends a2, gender g2, lives L
WHERE a1.student=g1.student AND a2.student=g2.student
AND L.student=g1.student AND a1.course=a2.course
AND g1.gender=‘male’ AND g2.gender=‘female’
TablesConstants
SELECT L.student, L.address
FROM attends a1, gender g1, attends a2, gender g2, lives L
WHERE a1.student=g1.student AND a2.student=g2.student
AND L.student=g1.student AND a1.course=a2.course
AND g1.gender=‘male’ AND g2.gender=‘female’
SELECT
SELECT L.student, L.address
FROM attends a1, gender g1, attends a2, gender g2, lives L
WHERE a1.student=g1.student AND a2.student=g2.student
AND L.student=g1.student AND a1.course=a2.course
AND g1.gender=‘male’ AND g2.gender=‘female’
WHERE
(wiring)
In conclusion
• Applied category theory is an exciting new field that seeks to mine
the benefits of compositionality wherever they may be found
• Supports marvelous graphical languages
• Early days!
• Watch this space
The future
• Anything where “making big things out of little things” is an
important part
• So far: category theorists discovering applications and promoting
• Industry might eventually begin to lead the charge
• Computer science & programming will be at the forefront: software
has eaten the world
• Functional programming will be at the forefront: we are early
adopters
People to follow on Twitter
John C. Baez
@johncarlosbaez
Jules Hedges
@_julesh_
Dr. Eugenia Cheng
@DrEugeniaCheng
Jade Master
@JadeMasterMath
Tai-Danae Bradley
@math3ma
Joe Moeller
@CreeepyJoe
Statebox
@statebox
Jelle Herold
@wires_wires
Fabrizio
Remano
Genovese
@fabgenovese
Further reading
• “Seven Sketches of Compositionality” by Brendan Fong, David I. Spivak (2018)
• “Applied category theory course” by John C. Baez (2018)
• “What is applied category theory?” by Tai-Danae Bradley (2018)
• “Network models” by Baez, Foley, Moeller, Pollard (2017)
• “The operad of wiring diagrams: formalizing a graphical language for
databases, recursion and plug-and-play circuits” by David I. Spivak (2013)

Más contenido relacionado

La actualidad más candente

Master method
Master method Master method
Master method Rajendran
 
5.5 Injective and surjective functions. Dynamic slides.
5.5 Injective and surjective functions. Dynamic slides.5.5 Injective and surjective functions. Dynamic slides.
5.5 Injective and surjective functions. Dynamic slides.Jan Plaza
 
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion Error
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion ErrorMath1003 1.17 - Truncation, Rounding, Overflow, & Conversion Error
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion Errorgcmath1003
 
Discrete mathematics OR Structure
Discrete mathematics OR Structure Discrete mathematics OR Structure
Discrete mathematics OR Structure Abdullah Jan
 
2.9 Cartesian products
2.9 Cartesian products2.9 Cartesian products
2.9 Cartesian productsJan Plaza
 
Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Scott Wlaschin
 
Chapter 06 constructors and destructors
Chapter 06 constructors and destructorsChapter 06 constructors and destructors
Chapter 06 constructors and destructorsPraveen M Jigajinni
 
SOLID Deconstruction
SOLID DeconstructionSOLID Deconstruction
SOLID DeconstructionKevlin Henney
 
Relation and function
Relation and functionRelation and function
Relation and functionAadityaGera
 
Syntax analyzer
Syntax analyzerSyntax analyzer
Syntax analyzerahmed51236
 
Types of functions 05272011
Types of functions 05272011Types of functions 05272011
Types of functions 05272011Boyet Aluan
 

La actualidad más candente (20)

Functions in mathematics
Functions in mathematicsFunctions in mathematics
Functions in mathematics
 
Master method
Master method Master method
Master method
 
Haskell study 4
Haskell study 4Haskell study 4
Haskell study 4
 
C introduction by thooyavan
C introduction by  thooyavanC introduction by  thooyavan
C introduction by thooyavan
 
Haskell study 3
Haskell study 3Haskell study 3
Haskell study 3
 
Set Theory Presentation
Set Theory PresentationSet Theory Presentation
Set Theory Presentation
 
5.5 Injective and surjective functions. Dynamic slides.
5.5 Injective and surjective functions. Dynamic slides.5.5 Injective and surjective functions. Dynamic slides.
5.5 Injective and surjective functions. Dynamic slides.
 
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion Error
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion ErrorMath1003 1.17 - Truncation, Rounding, Overflow, & Conversion Error
Math1003 1.17 - Truncation, Rounding, Overflow, & Conversion Error
 
Discrete mathematics OR Structure
Discrete mathematics OR Structure Discrete mathematics OR Structure
Discrete mathematics OR Structure
 
Relations
RelationsRelations
Relations
 
2.9 Cartesian products
2.9 Cartesian products2.9 Cartesian products
2.9 Cartesian products
 
inheritance
inheritanceinheritance
inheritance
 
Functions
FunctionsFunctions
Functions
 
Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013Domain Driven Design with the F# type System -- NDC London 2013
Domain Driven Design with the F# type System -- NDC London 2013
 
Chapter 06 constructors and destructors
Chapter 06 constructors and destructorsChapter 06 constructors and destructors
Chapter 06 constructors and destructors
 
SOLID Deconstruction
SOLID DeconstructionSOLID Deconstruction
SOLID Deconstruction
 
Relation and function
Relation and functionRelation and function
Relation and function
 
Alpha beta pruning
Alpha beta pruningAlpha beta pruning
Alpha beta pruning
 
Syntax analyzer
Syntax analyzerSyntax analyzer
Syntax analyzer
 
Types of functions 05272011
Types of functions 05272011Types of functions 05272011
Types of functions 05272011
 

Similar a Applied category theory: the emerging science of compositionality

Building Applications with a Graph Database
Building Applications with a Graph DatabaseBuilding Applications with a Graph Database
Building Applications with a Graph DatabaseTobias Lindaaker
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Scott Wlaschin
 
Donut chart in Revit with Dynamo
Donut chart in Revit with DynamoDonut chart in Revit with Dynamo
Donut chart in Revit with DynamoWojciech Klepacki
 
How to Have Code Reviews That Developers Actually Want
How to Have Code Reviews That Developers Actually WantHow to Have Code Reviews That Developers Actually Want
How to Have Code Reviews That Developers Actually WantCameron Presley
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern CompilersMin-Yih Hsu
 
The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...Mark Heckmann
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem Claudson Oliveira
 
Design patterns
Design patternsDesign patterns
Design patternsnisheesh
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampTheo Jungeblut
 
Neo4j Training Modeling
Neo4j Training ModelingNeo4j Training Modeling
Neo4j Training ModelingMax De Marzi
 
Ember. it is time to try
Ember. it is time to tryEmber. it is time to try
Ember. it is time to tryYaroslav Popov
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmPawel Szulc
 
Principles Of Web Design Workshop
Principles Of Web Design WorkshopPrinciples Of Web Design Workshop
Principles Of Web Design WorkshopGavin Elliott
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JC4Media
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++Mike Acton
 
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMilen Dyankov
 

Similar a Applied category theory: the emerging science of compositionality (20)

Building Applications with a Graph Database
Building Applications with a Graph DatabaseBuilding Applications with a Graph Database
Building Applications with a Graph Database
 
Ruby Egison
Ruby EgisonRuby Egison
Ruby Egison
 
Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)Reinventing the Transaction Script (NDC London 2020)
Reinventing the Transaction Script (NDC London 2020)
 
Donut chart in Revit with Dynamo
Donut chart in Revit with DynamoDonut chart in Revit with Dynamo
Donut chart in Revit with Dynamo
 
How to Have Code Reviews That Developers Actually Want
How to Have Code Reviews That Developers Actually WantHow to Have Code Reviews That Developers Actually Want
How to Have Code Reviews That Developers Actually Want
 
From V8 to Modern Compilers
From V8 to Modern CompilersFrom V8 to Modern Compilers
From V8 to Modern Compilers
 
Sylius, the good choice
Sylius, the good choiceSylius, the good choice
Sylius, the good choice
 
The OpenRepGrid project – Software tools for the analysis and administration...
The OpenRepGrid project – Software tools  for the analysis and administration...The OpenRepGrid project – Software tools  for the analysis and administration...
The OpenRepGrid project – Software tools for the analysis and administration...
 
C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem C# .NET - Um overview da linguagem
C# .NET - Um overview da linguagem
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Clean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code CampClean Code Part III - Craftsmanship at SoCal Code Camp
Clean Code Part III - Craftsmanship at SoCal Code Camp
 
Scalax
ScalaxScalax
Scalax
 
Neo4j Training Modeling
Neo4j Training ModelingNeo4j Training Modeling
Neo4j Training Modeling
 
Ember. it is time to try
Ember. it is time to tryEmber. it is time to try
Ember. it is time to try
 
Quality code 2019
Quality code 2019Quality code 2019
Quality code 2019
 
Know your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvmKnow your platform. 7 things every scala developer should know about jvm
Know your platform. 7 things every scala developer should know about jvm
 
Principles Of Web Design Workshop
Principles Of Web Design WorkshopPrinciples Of Web Design Workshop
Principles Of Web Design Workshop
 
How Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4JHow Shutl Delivers Even Faster Using Neo4J
How Shutl Delivers Even Faster Using Neo4J
 
Data oriented design and c++
Data oriented design and c++Data oriented design and c++
Data oriented design and c++
 
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmxMoved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
Moved to https://slidr.io/azzazzel/web-application-performance-tuning-beyond-xmx
 

Más de kenbot

Grow your own tech leads
Grow your own tech leadsGrow your own tech leads
Grow your own tech leadskenbot
 
Responsible DI: Ditch the Frameworks
Responsible DI: Ditch the FrameworksResponsible DI: Ditch the Frameworks
Responsible DI: Ditch the Frameworkskenbot
 
FP adoption at REA
FP adoption at REAFP adoption at REA
FP adoption at REAkenbot
 
Lenses for the masses - introducing Goggles
Lenses for the masses - introducing GogglesLenses for the masses - introducing Goggles
Lenses for the masses - introducing Goggleskenbot
 
Good functional programming is good programming
Good functional programming is good programmingGood functional programming is good programming
Good functional programming is good programmingkenbot
 
Data made out of functions
Data made out of functionsData made out of functions
Data made out of functionskenbot
 
Imagine a world without mocks
Imagine a world without mocksImagine a world without mocks
Imagine a world without mockskenbot
 
2 Years of Real World FP at REA
2 Years of Real World FP at REA2 Years of Real World FP at REA
2 Years of Real World FP at REAkenbot
 
Your data structures are made of maths!
Your data structures are made of maths!Your data structures are made of maths!
Your data structures are made of maths!kenbot
 
The disaster of mutable state
The disaster of mutable stateThe disaster of mutable state
The disaster of mutable statekenbot
 

Más de kenbot (10)

Grow your own tech leads
Grow your own tech leadsGrow your own tech leads
Grow your own tech leads
 
Responsible DI: Ditch the Frameworks
Responsible DI: Ditch the FrameworksResponsible DI: Ditch the Frameworks
Responsible DI: Ditch the Frameworks
 
FP adoption at REA
FP adoption at REAFP adoption at REA
FP adoption at REA
 
Lenses for the masses - introducing Goggles
Lenses for the masses - introducing GogglesLenses for the masses - introducing Goggles
Lenses for the masses - introducing Goggles
 
Good functional programming is good programming
Good functional programming is good programmingGood functional programming is good programming
Good functional programming is good programming
 
Data made out of functions
Data made out of functionsData made out of functions
Data made out of functions
 
Imagine a world without mocks
Imagine a world without mocksImagine a world without mocks
Imagine a world without mocks
 
2 Years of Real World FP at REA
2 Years of Real World FP at REA2 Years of Real World FP at REA
2 Years of Real World FP at REA
 
Your data structures are made of maths!
Your data structures are made of maths!Your data structures are made of maths!
Your data structures are made of maths!
 
The disaster of mutable state
The disaster of mutable stateThe disaster of mutable state
The disaster of mutable state
 

Último

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noidabntitsolutionsrishis
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...Technogeeks
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 

Último (20)

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in NoidaBuds n Tech IT Solutions: Top-Notch Web Services in Noida
Buds n Tech IT Solutions: Top-Notch Web Services in Noida
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...What is Advanced Excel and what are some best practices for designing and cre...
What is Advanced Excel and what are some best practices for designing and cre...
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 

Applied category theory: the emerging science of compositionality