o f S o l v i n g t h e P r o b l e m ” H o w t o c h a n g e a n d m o d i f y p a r t s o f a s y s t e m w i t h o u t m a k i n g t h e s y s t e m a s a w h o l e m o r e c o m p l i c a t e d ”
s • W e a r e t e c h n i c a l p e o p l e • W e h a v e t e c h n i c a l d i s c u s s i o n s • W e l e a r n t o s a y ” i t d e p e n d s ” • A n d t h a t s o f t w a r e e n g i n e e r i n g i s a b o u t t r a d e - o f f s
s • W e a r e t e c h n i c a l p e o p l e • W e h a v e t e c h n i c a l d i s c u s s i o n s • W e l e a r n t o s a y ” i t d e p e n d s ” • A n d t h a t s o f t w a r e e n g i n e e r i n g i s a b o u t t r a d e - o f f s • B u t m o s t o f a l l t o h a v e f a i t h i n w h a t i s a l r e a d y w o r k i n g
• H a v i n g t u n n e l v i s i o n • J u s t i f y i n g w h a t w e a l r e a d y k n o w • G e t t i n g l o s t i n t e c h n i c a l d i s c u s s i o n s
H a v e a n o p e n m i n d • J u s t i f y s c i e n c e , l o g i c • S t a r t w i t h t h e f u n d a m e n t a l s o f p r o b l e m s o l v i n g
c t i o n a l p r o g r a m m i n g d o e s n o t o n l y m a t t e r • I t i s u n i v e r s a l ! ( d i r e c t c o r r e s p o n d e n c e w i t h l o g i c ) [ 2 ]
c t i o n a l p r o g r a m m i n g d o e s n o t o n l y m a t t e r • I t i s u n i v e r s a l ! ( d i r e c t c o r r e s p o n d e n c e w i t h l o g i c ) [ 2 ] • =⇒ L e t s u s t a l k a b o u t t h e s t r u c t u r e o f p r o b l e m s o l v i n g
c t i o n a l p r o g r a m m i n g d o e s n o t o n l y m a t t e r • I t i s u n i v e r s a l ! ( d i r e c t c o r r e s p o n d e n c e w i t h l o g i c ) [ 2 ] • =⇒ L e t s u s t a l k a b o u t t h e s t r u c t u r e o f p r o b l e m s o l v i n g • =⇒ L e t s u s f o c u s o n t h e e s s e n c e o f p r o g r a m m i n g
c t i o n a l p r o g r a m m i n g d o e s n o t o n l y m a t t e r • I t i s u n i v e r s a l ! ( d i r e c t c o r r e s p o n d e n c e w i t h l o g i c ) [ 2 ] • =⇒ L e t s u s t a l k a b o u t t h e s t r u c t u r e o f p r o b l e m s o l v i n g • =⇒ L e t s u s f o c u s o n t h e e s s e n c e o f p r o g r a m m i n g
d e = C o d e t h a t i s e a s y t o u n d e r s t a n d • E l e g a n t c o d e = C o d e b r o k e n u p i n t o j u s t b i g e n o u g h p i e c e s
d e = C o d e t h a t i s e a s y t o u n d e r s t a n d • E l e g a n t c o d e = C o d e b r o k e n u p i n t o j u s t b i g e n o u g h p i e c e s ( b y d i v i d e a n d c o n q u e r )
r o g r a m i s … • A s o l u t i o n t o a p r o b l e m • A s o l u t i o n t o m a n y s m a l l e r p r o b l e m s • C o m p l e x i t y , s p l i t u p i n t o p i e c e s
r o g r a m i s … • A s o l u t i o n t o a p r o b l e m • A s o l u t i o n t o m a n y s m a l l e r p r o b l e m s • C o m p l e x i t y , s p l i t u p i n t o p i e c e s • I n f o r m a t i o n f l o w i n g i n a s t r u c t u r e
r o g r a m i s … • A s o l u t i o n t o a p r o b l e m • A s o l u t i o n t o m a n y s m a l l e r p r o b l e m s • C o m p l e x i t y , s p l i t u p i n t o p i e c e s • I n f o r m a t i o n f l o w i n g i n a s t r u c t u r e ( b y d i v i d e a n d c o n q u e r )
u s e t h e m a t h e m a t i c a l m o d e l o f f u n c t i o n s • B u t i n p r o g r a m m i n g , w e c a n n o t h a v e m a t h e m a t i c a l f u n c t i o n s
u s e t h e m a t h e m a t i c a l m o d e l o f f u n c t i o n s • B u t i n p r o g r a m m i n g , w e c a n n o t h a v e m a t h e m a t i c a l f u n c t i o n s • H o w e v e r , w e c a n g e t c l o s e e n o u g h
u s e t h e m a t h e m a t i c a l m o d e l o f f u n c t i o n s • B u t i n p r o g r a m m i n g , w e c a n n o t h a v e m a t h e m a t i c a l f u n c t i o n s • H o w e v e r , w e c a n g e t c l o s e e n o u g h • S o l e t ’s t h i n k a b o u t o u r p r o g r a m s a s a c o l l e c t i o n o f p u r e f u n c t i o n s …
u s e t h e m a t h e m a t i c a l m o d e l o f f u n c t i o n s • B u t i n p r o g r a m m i n g , w e c a n n o t h a v e m a t h e m a t i c a l f u n c t i o n s • H o w e v e r , w e c a n g e t c l o s e e n o u g h • S o l e t ’s t h i n k a b o u t o u r p r o g r a m s a s a c o l l e c t i o n o f p u r e f u n c t i o n s … • … c o m p o s e d t o g e t h e r i n a c e r t a i n s t r u c t u r e
u s e t h e m a t h e m a t i c a l m o d e l o f f u n c t i o n s • B u t i n p r o g r a m m i n g , w e c a n n o t h a v e m a t h e m a t i c a l f u n c t i o n s • H o w e v e r , w e c a n g e t c l o s e e n o u g h • S o l e t ’s t h i n k a b o u t o u r p r o g r a m s a s a c o l l e c t i o n o f p u r e f u n c t i o n s … • … c o m p o s e d t o g e t h e r i n a c e r t a i n s t r u c t u r e ( b y d i v i d e a n d c o n q u e r )
e o r y • I s t h e s c i e n c e o f p a t t e r n s • I s t h e s t u d y o f c o m p o s i t i o n • I s a l a n g u a g e t h a t a b s t r a c t s s t r u c t u r e a c r o s s d i f f e r e n t f i e l d s
e o r y • I s t h e s c i e n c e o f p a t t e r n s • I s t h e s t u d y o f c o m p o s i t i o n • I s a l a n g u a g e t h a t a b s t r a c t s s t r u c t u r e a c r o s s d i f f e r e n t f i e l d s • A p p l i e s w e l l t o p r o g r a m m i n g …
e o r y • I s t h e s t u d y o f c o m p o s i t i o n • I s t h e s c i e n c e o f p a t t e r n s • I s a l a n g u a g e t h a t a b s t r a c t s s t r u c t u r e a c r o s s d i f f e r e n t f i e l d s • A p p l i e s w e l l t o p r o g r a m m i n g … • … b e c a u s e p r o g r a m m i n g i s a l l a b o u t s t r u c t u r e
e a c a t e g o r y 1 . S a y w h a t t h e o b j e c t s a r e 2 . S a y w h a t t h e a r r o w s a r e 3 . S a y w h a t t h e i d e n t i t i e s a r e
e a c a t e g o r y 1 . S a y w h a t t h e o b j e c t s a r e 2 . S a y w h a t t h e a r r o w s a r e 3 . S a y w h a t t h e i d e n t i t i e s a r e 4 . S a y h o w t h e a r r o w s c o m p o s e
r s t a l k i n d a t a … • … a n d g i v e t h e d a t a t y p e s • T h e y s p e n d t h e i r d a y s t r a n s f o r m i n g i t w i t h f u n c t i o n s …
r s t a l k i n d a t a … • … a n d g i v e t h e d a t a t y p e s • T h e y s p e n d t h e i r d a y s t r a n s f o r m i n g i t w i t h f u n c t i o n s … • … a n d c o m p o s e t h o s e f u n c t i o n s i n o r d e r t o D . R .Y
y o f T y p e s a n d F u n c t i o n s 1 . O b j e c t s → T y p e s 2 . A r r o w s → F u n c t i o n s 3 . C o m p o s i t i o n → F u n c t i o n c o m p o s i t i o n
y o f T y p e s a n d F u n c t i o n s 1 . O b j e c t s → T y p e s 2 . A r r o w s → F u n c t i o n s 3 . C o m p o s i t i o n → F u n c t i o n c o m p o s i t i o n A t o o l t o s t u d y e s s e n c e o f p r o g r a m m i n g !
• I s a m a p p i n g b e t w e e n c a t e g o r i e s • M a p s o b j e c t s i n t o o b j e c t s a n d a r r o w s i n t o a r r o w s … • … P r e s e r v i n g s t r u c t u r e ! ( o r m e a n i n g )
… • C a t e g o r y t h e o r y : M a p p i n g b e t w e e n c a t e g o r i e s • P r o g r a m m i n g : W a y t o c o n s t r u c t a r i c h e r t y p e f r o m a s i m p l e r t y p e ( e . g . Int -> List Int)
… • C a t e g o r y t h e o r y : M a p p i n g b e t w e e n c a t e g o r i e s • P r o g r a m m i n g : W a y t o c o n s t r u c t a r i c h e r t y p e f r o m a s i m p l e r t y p e ( e . g . Int -> List Int) H o w d o w e d o t h i s i n p r a c t i c e ?
e p r o g r a m m a t i c w a y o f o f m a p p i n g b e t w e e n t y p e s a n d f u n c t i o n s . • L i f t i n g s i m p l e r t y p e s i n t o r i c h e r t y p e s
e p r o g r a m m a t i c w a y o f o f m a p p i n g b e t w e e n t y p e s a n d f u n c t i o n s . • L i f t i n g s i m p l e r t y p e s i n t o r i c h e r t y p e s • R e p r e s e n t e d b y t h e Functor c l a s s ( b y i m p l e m e n t i n g fmap)
i n … • C a t e g o r y T h e o r y : R e p r e s e n t s n e w p a r t s o f c a t e g o r i e s • P r o g r a m m i n g : R e p r e s e n t s n e w c o m p u t a t i o n a l c o n t e x t s
i n … • C a t e g o r y T h e o r y : R e p r e s e n t s n e w p a r t s o f c a t e g o r i e s R e t a i n i n g s t r u c t u r e ! • P r o g r a m m i n g : R e p r e s e n t s n e w c o m p u t a t i o n a l c o n t e x t s R e t a i n i n g s t r u c t u r e !
i n … • C a t e g o r y T h e o r y : R e p r e s e n t s n e w p a r t s o f c a t e g o r i e s R e t a i n i n g s t r u c t u r e ! • P r o g r a m m i n g : R e p r e s e n t s n e w c o m p u t a t i o n a l c o n t e x t s R e t a i n i n g s t r u c t u r e ! =⇒ L e t s u s f o c u s o n o r i g i n a l p r o g r a m s t r u c t u r e i n a n e w c o n t e x t
t e x t s • L i s t : W h e r e c o m p u t a t i o n s m a y h a v e m u l t i p l e r e t u r n v a l u e s • M a y b e ( O p t i o n a l ) : W h e r e f a i l u r e s m i g h t o c c u r
t e x t s • L i s t : W h e r e c o m p u t a t i o n s m a y h a v e m u l t i p l e r e t u r n v a l u e s • M a y b e ( O p t i o n a l ) : W h e r e f a i l u r e s m i g h t o c c u r • I O : W h e r e s i d e e f f e c t s c a n h a p p e n
t e x t s • L i s t : W h e r e c o m p u t a t i o n s m a y h a v e m u l t i p l e r e t u r n v a l u e s • M a y b e ( O p t i o n a l ) : W h e r e f a i l u r e s m i g h t o c c u r • I O : W h e r e s i d e e f f e c t s c a n h a p p e n → U s e t h e f u n c t o r t o a b s t r a c t o v e r t h e c o n t e x t !
t e g o r i c a l l y g i v e s u s • S t r u c t u r e f o r f r e e • I n s t a n t c o n t e x t s w i t c h i n g • I n o t h e r w o r d s F l e x i b i l i t y
t e g o r i c a l l y g i v e s u s • S t r u c t u r e f o r f r e e • I n s t a n t c o n t e x t s w i t c h i n g • I n o t h e r w o r d s F l e x i b i l i t y C o d e r e u s e
t e g o r i c a l l y g i v e s u s • S t r u c t u r e f o r f r e e • I n s t a n t c o n t e x t s w i t c h i n g • I n o t h e r w o r d s F l e x i b i l i t y C o d e r e u s e S e p a r a t i o n o f c o n c e r n s
t e g o r i c a l l y g i v e s u s • S t r u c t u r e f o r f r e e • I n s t a n t c o n t e x t s w i t c h i n g • I n o t h e r w o r d s F l e x i b i l i t y C o d e r e u s e S e p a r a t i o n o f c o n c e r n s M o d u l a r i t y
a t e g o r i c a l l y w i l l m i g h t n o t m a k e w e b p a c k c o m p i l e • B u t I t w i l l : H e l p u s e x p o s e s t r u c t u r e G i v e u s a d i f f e r e n t v i e w o n c o n t e x t
a t e g o r i c a l l y w i l l m i g h t n o t m a k e w e b p a c k c o m p i l e • B u t I t w i l l : H e l p u s e x p o s e s t r u c t u r e G i v e u s a d i f f e r e n t v i e w o n c o n t e x t H e l p u s c h a n g e a n d e x t e n d l o c a l l y w i t h o u t c o m p l e c t i n g g l o b a l l y
a t e g o r i c a l l y w i l l m i g h t n o t m a k e w e b p a c k c o m p i l e • B u t I t w i l l : H e l p u s e x p o s e s t r u c t u r e G i v e u s a d i f f e r e n t v i e w o n c o n t e x t H e l p u s c h a n g e a n d e x t e n d l o c a l l y w i t h o u t c o m p l e c t i n g g l o b a l l y T h e f u n c t o r i s j u s t t h e b e g i n n i n g …
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y • I t s i m p l e m e n t a t i o n i s o p e n
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y • I t s i m p l e m e n t a t i o n i s o p e n N o t b o u n d t o t h e c l a s s t h a t i m p l e m e n t s t h e i n t e r f a c e
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y • I t s i m p l e m e n t a t i o n i s o p e n N o t b o u n d t o t h e c l a s s t h a t i m p l e m e n t s t h e i n t e r f a c e • G i v e s u s i n f o r m a t i o n a b o u t a f u n c t i o n w i t h o u t l o o k i n g a t i t s i m p l e m e n t a t i o n
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y • I t s i m p l e m e n t a t i o n i s o p e n N o t b o u n d t o t h e c l a s s t h a t i m p l e m e n t s t h e i n t e r f a c e • G i v e s u s i n f o r m a t i o n a b o u t a f u n c t i o n w i t h o u t l o o k i n g a t i t s i m p l e m e n t a t i o n D o e s n o t r e q u i r e u s l e a r n i n g e a c h c o n t e x t i n d e p e n d e n t l y
a T y p e C l a s s • E x t e n d s t h e b e h a v i o r o f d a t a N o t t h e d a t a i t s e l f • I s p a r t o f a r e l a t i o n t o o t h e r b e h a v i o r s N o t a p a r t o f a r i g i d t y p e h i e r a r c h y • I t s i m p l e m e n t a t i o n i s o p e n N o t b o u n d t o t h e c l a s s t h a t i m p l e m e n t s t h e i n t e r f a c e • G i v e s u s i n f o r m a t i o n a b o u t a f u n c t i o n w i t h o u t l o o k i n g a t i t s i m p l e m e n t a t i o n D o e s n o t r e q u i r e u s l e a r n i n g e a c h c o n t e x t i n d e p e n d e n t l y • =⇒ B l e n d s o u t t h e d e t a i l s , f o c u s o n t h e i n t e r a c t i o n s
n d a m e n t a l l y , w e s o l v e a l l p r o b l e m s t h e s a m e w a y : s p l i t t i n g , s o l v i n g , r e c u r s i n g , c o m p o s i n g
n d a m e n t a l l y , w e s o l v e a l l p r o b l e m s t h e s a m e w a y : s p l i t t i n g , s o l v i n g , r e c u r s i n g , c o m p o s i n g • S t r u c t u r e e m e r g e s t h r o u g h c o m p o s i t i o n
n d a m e n t a l l y , w e s o l v e a l l p r o b l e m s t h e s a m e w a y : s p l i t t i n g , s o l v i n g , r e c u r s i n g , c o m p o s i n g • S t r u c t u r e e m e r g e s t h r o u g h c o m p o s i t i o n • P u r e , m a t h - i n s p i r e d f u n c t i o n s a r e t h e m o s t n a t u r a l t o o l t o m o d e l p r o b l e m s o l v i n g i n c o m p u t e r p r o g r a m m i n g
n d a m e n t a l l y , w e s o l v e a l l p r o b l e m s t h e s a m e w a y : s p l i t t i n g , s o l v i n g , r e c u r s i n g , c o m p o s i n g • S t r u c t u r e e m e r g e s t h r o u g h c o m p o s i t i o n • P u r e , m a t h - i n s p i r e d f u n c t i o n s a r e t h e m o s t n a t u r a l t o o l t o m o d e l p r o b l e m s o l v i n g i n c o m p u t e r p r o g r a m m i n g • C a t e g o r y t h e o r y l e t s u s s t u d y c o m p o s i t i o n …
n d a m e n t a l l y , w e s o l v e a l l p r o b l e m s t h e s a m e w a y : s p l i t t i n g , s o l v i n g , r e c u r s i n g , c o m p o s i n g • S t r u c t u r e e m e r g e s t h r o u g h c o m p o s i t i o n • P u r e , m a t h - i n s p i r e d f u n c t i o n s a r e t h e m o s t n a t u r a l t o o l t o m o d e l p r o b l e m s o l v i n g i n c o m p u t e r p r o g r a m m i n g • C a t e g o r y t h e o r y l e t s u s s t u d y c o m p o s i t i o n … • … a n d p r o v i d e s t o o l s s u c h a s t h e f u n c t o r t h a t e n c o u r a g e s u s t o f o c u s o n i n t e r a c t i o n s b e t w e e n t h i n g s , n o t t h i n g s t h e m s e l v e s
u e s t i o n s ? L u d v i g S u n d s t r ö m l u d v i g . s u n d s t r o e m @ i n n o q . c o m � + 4 9 1 5 1 6 1 1 8 1 2 7 0 � @ l 5 u n d w w w . i n n o q . c o m i n n o Q D e u t s c h l a n d G m b H K r i s c h e r s t r . 1 0 0 4 0 7 8 9 M o n h e i m a . R h . G e r m a n y + 4 9 2 1 7 3 3 3 6 6 - 0 O h l a u e r S t r . 4 3 1 0 9 9 9 B e r l i n G e r m a n y L u d w i g s t r . 1 8 0 E 6 3 0 6 7 O f f e n b a c h G e r m a n y K r e u z s t r . 1 6 8 0 3 3 1 M ü n c h e n G e r m a n y c / o W e W o r k H e r m a n n s t r a s s e 1 3 2 0 0 9 5 H a m b u r g G e r m a n y i n n o Q S c h w e i z G m b H G e w e r b e s t r . 1 1 C H - 6 3 3 0 C h a m S w i t z e r l a n d + 4 1 4 1 7 4 3 0 1 1 1 A l b u l a s t r . 5 5 8 0 4 8 Z ü r i c h S w i t z e r l a n d
i a t i v i t y i n a c a t e g o r y : h . g . f = ( h . g ) . f = h . ( g . f ) • I d e n t i t y i n a c a t e g o r y ( f o r f : : a - > b ) : f . i d _ a = f , i d _ b . f = f • F u n c t o r r e t a i n s s t r u c t u r e u n d e r c o m p o s i t i o n : i f h = g . f , t h e n F h = F g . F f • F u n c t o r r e t a i n s s t r u c t u r e u n d e r i d e n t i t y : F i d _ a = i d _ { F a }
r d I s o m o r p h i s m • V o i d ⇐⇒ F a l s e • ( ) ⇐⇒ T r u e • P r o d u c t T y p e s ⇐⇒ O R • S u m T y p e s ⇐⇒ A N D • A - > B ⇐⇒ I f A t h e n B
c t o r a s a t y p e c l a s s I n t e r f a c e s m e t h o d s a r e a l w a y s a s s o c i a t e d w i t h a n o b j e c t i n s t a n c e . I n o t h e r w o r d s , t h e r e i s a l w a y s a n i m p l i e d ’ t h i s ’ p a r a m e t e r t h a t i s t h e o b j e c t o n w h i c h t h e m e t h o d i s c a l l e d . A l l i n p u t s t o a t y p e c l a s s f u n c t i o n a r e e x p l i c i t .