Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Essence of Programming

The Essence of Programming

Problem solving by function composition, abstracting structure with category theory and functors

Ludvig Sundström

February 28, 2020
Tweet

More Decks by Ludvig Sundström

Other Decks in Technology

Transcript

  1. F e b r u a r y 2 0

    2 0 B O B C o n f e r e n c e , B e r l i n T h e E s s e n c e o f P r o g r a m m i n g
  2. L u d v i g S u n d

    s t r ö m C o n s u l t a n t I N N O Q D e u t s c h l a n d G m b H l u d v i g . s u n d s t r o e m @ i n n o q . c o m
  3. M y A g e n d a • S

    t r u c t u r e i n p r o b l e m s o l v i n g
  4. M y A g e n d a • S

    t r u c t u r e i n p r o b l e m s o l v i n g • U s i n g f u n c t i o n c o m p o s i t i o n
  5. M y A g e n d a • S

    t r u c t u r e i n p r o b l e m s o l v i n g • U s i n g f u n c t i o n c o m p o s i t i o n • L e a r n i n g a b o u t c a t e g o r i e s
  6. M y A g e n d a • S

    t r u c t u r e i n p r o b l e m s o l v i n g • U s i n g f u n c t i o n c o m p o s i t i o n • L e a r n i n g a b o u t c a t e g o r i e s
  7. S t o c k h o l m ,

    S w e d e n
  8. • H a s k e l l • C

    l o j u r e • E r l a n g
  9. • H a s k e l l • C

    l o j u r e • E r l a n g • S c a l a
  10. • H a s k e l l • C

    l o j u r e • E r l a n g • S c a l a • e t c .
  11. λ

  12. U p p s a l a , S c

    h w e d e n
  13. A v o i d ! • Q u i

    c k f i x e s
  14. A v o i d ! • Q u i

    c k f i x e s • U n n e c e s s a r y l a y e r s o f t e c h n o l o g y
  15. A v o i d ! • Q u i

    c k f i x e s • U n n e c e s s a r y l a y e r s o f t e c h n o l o g y • M i s u n d e r s t a n d i n g t h e p r o b l e m i t s e l f
  16. T h e P r o b l e m

    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 ”
  17. I ’ l l t a c k l e

    t h e p r o b l e m o f t h e p r o b l e m b y e x p l a i n i n g w h y …
  18. F A Q • I f f u n c

    t i o n a l p r o g r a m m i n g m a t t e r s …
  19. F A Q • I f f u n c

    t i o n a l p r o g r a m m i n g m a t t e r s … • … W h y i s t h e f u n c t i o n a l f a n - c l u b s o s m a l l ? [ 2 ]
  20. F A Q : A n s w e r

    s • W e a r e t e c h n i c a l p e o p l e
  21. F A Q : A n s w e r

    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
  22. F A Q : A n s w e r

    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 ”
  23. F A Q : A n s w e r

    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
  24. F A Q : A n s w e r

    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
  25. “ F a i t h t r i u

    m p h s o v e r s c i e n c e [ i n p r o g r a m m i n g ] ” - P h i l i p W a l d l e r
  26. I n s t e a d o f …

    • H a v i n g t u n n e l v i s i o n
  27. I n s t e a d o f …

    • 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
  28. I n s t e a d o f …

    • 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
  29. W e s h o u l d … •

    H a v e a n o p e n m i n d
  30. W e s h o u l d … •

    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
  31. W e s h o u l d … •

    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
  32. O n l y t h e n c a

    n w e l i f t o u r s e l v e s o v e r t h e e v e r y d a y p r o g r a m m i n g g r i n d !
  33. W h y F P ? • F u n

    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
  34. W h y F P ? • F u n

    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 ]
  35. W h y F P ? • F u n

    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
  36. W h y F P ? • F u n

    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
  37. W h y F P ? • F u n

    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
  38. 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
  39. W e d o o u r b e s

    t t o c r e a t e m o d u l a r , l o s e l y c o u p l e d , c o m p o s a b l e a b s t r a c t i o n s
  40. • W e p r o g r a m

    i n o r d e r t o s o l v e p r o b l e m s ( O r l y ? )
  41. • W e p r o g r a m

    i n o r d e r t o s o l v e p r o b l e m s ( O r l y ? ) • T h e n h o w d o w e s o l v e p r o b l e m s ?
  42. C S : 1 0 1 D i v i

    d e a n d C o n q u e r
  43. • E l e g a n t c o

    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
  44. • E l e g a n t c o

    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
  45. • E l e g a n t c o

    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 )
  46. C S : 1 0 1 D i v i

    d e a n d C o n q u e r
  47. A c o m p u t e r p

    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
  48. A c o m p u t e r p

    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
  49. A c o m p u t e r p

    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
  50. A c o m p u t e r p

    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
  51. A c o m p u t e r p

    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 )
  52. H o w d o w e b u i

    l d i n f o r m a t i o n f l o w ?
  53. E n t e r t h e f u

    n c t i o n
  54. • W e ’d l i k e t o

    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
  55. • W e ’d l i k e t o

    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
  56. • W e ’d l i k e t o

    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
  57. • W e ’d l i k e t o

    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 …
  58. • W e ’d l i k e t o

    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
  59. • W e ’d l i k e t o

    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 )
  60. D i v i d e a n d C

    o n q u e r =⇒ S t r u c t u r e
  61. D i v i d e a n d C

    o n q u e r =⇒ S t r u c t u r e = F u n c t i o n C o m p o s i t i o n
  62. D i v i d e a n d C

    o n q u e r =⇒ S t r u c t u r e = F u n c t i o n C o m p o s i t i 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 !
  63. N o w s h o w m e h

    o w t o s t u d y t h e e s s e n c e o f p r o g r a m m i n g !
  64. C a t e g o r y T h

    e o r y ( w i t h o u t m o s t o f t h e t h e o r y )
  65. C a t e g o r y T h

    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
  66. C a t e g o r y T h

    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
  67. C a t e g o r y T h

    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
  68. C a t e g o r y T h

    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 …
  69. C a t e g o r y T h

    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
  70. O k , s h o w m e w

    h a t a c a t e g o r y i s .
  71. • T h a t ’s i t . •

    C T l e a v e s i t t o u s t o d i s c o v e r t h e m e a n i n g b e h i n d t h i s s i m p l e s t r u c t u r e
  72. T h e n s h o w m e

    h o w t o d e f i n e a c a t e g o r y w i t h s o m e m e a n i n g !
  73. H o w t o d e f i n

    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
  74. H o w t o d e f i n

    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
  75. H o w t o d e f i n

    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
  76. H o w t o d e f i n

    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
  77. P r o g r a m m e r

    s C a t e g o r y
  78. • P r o g r a m m e

    r s t a l k i n d a t a …
  79. • P r o g r a m m 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
  80. • P r o g r a m m 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 …
  81. • P r o g r a m m 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 … • … 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
  82. T h e C a t e g o r

    y o f T y p e s a n d F u n c t i o n s
  83. T h e C a t e g o r

    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
  84. T h e C a t e g o r

    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
  85. T h e C a t e g o r

    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
  86. T h e C a t e g o r

    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 !
  87. T h e F u n c t o r

    • 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
  88. T h e F u n c t o r

    • 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 …
  89. T h e F u n c t o r

    • 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 )
  90. F u n c t o r s i n

    P r o g r a m m i n g
  91. A F u n c t o r i n

    … • 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
  92. A F u n c t o r i n

    … • 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)
  93. A F u n c t o r i n

    … • 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 ?
  94. E n t e r : fmap • T h

    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 .
  95. E n t e r : fmap • T h

    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
  96. E n t e r : fmap • T h

    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)
  97. T h e F u n c t o r

    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
  98. T h e F u n c t o r

    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
  99. T h e F u n c t o r

    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 !
  100. T h e F u n c t o r

    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
  101. E x a m p l e C o 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
  102. E x a m p l e C o 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
  103. E x a m p l e C o 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
  104. E x a m p l e C o 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 !
  105. N o w s h o w m e h

    o w t o m a k e a t y p e a f u n c t o r !
  106. -- -- How to make List a functor -- instance

    Functor [] where fmap g xs = map g xs
  107. -- -- How to make Maybe a functor -- instance

    Functor Maybe where fmap g (Just x) = Just (g x) fmap g Nothing = Nothing
  108. -- -- How to make IO a functor -- instance

    Functor IO where fmap g action = do x <- action return (g x)
  109. T h i n k i n g c a

    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
  110. T h i n k i n g c a

    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
  111. T h i n k i n g c a

    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
  112. T h i n k i n g c a

    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
  113. T h i n k i n g c a

    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
  114. T h i n k i n g c a

    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
  115. T h i n k i n g c a

    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
  116. • T h i n k i n g c

    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
  117. • T h i n k i n g c

    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 :
  118. • T h i n k i n g c

    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
  119. • T h i n k i n g c

    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
  120. • T h i n k i n g c

    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
  121. • T h i n k i n g c

    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 …
  122. A f u n c t o r a 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
  123. A f u n c t o r a 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
  124. A f u n c t o r a 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
  125. A f u n c t o r a 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
  126. A f u n c t o r a 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 • I t s i m p l e m e n t a t i o n i s o p e n
  127. A f u n c t o r a 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 • 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
  128. A f u n c t o r a 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 • 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
  129. A f u n c t o r a 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 • 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
  130. A f u n c t o r a 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 • 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
  131. S u m m a r y • F u

    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
  132. S u m m a r y • F u

    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
  133. S u m m a r y • F u

    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
  134. S u m m a r y • F u

    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 …
  135. S u m m a r y • F u

    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
  136. S t r u c t u r i z

    e , d o n ’ t o p t i m i z e
  137. T h a n k y o u ! Q

    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
  138. 0 : http://cdn.makeuseof.com/wp-content/uploads/2014/09/ stress-free-programming-frustration.jpg?x92042 1 : https: //insights.stackoverflow.com/survey/2019#technology 2 :

    https://en.wikipedia.org/wiki/Curry%E2%80%93Howard_ correspondence 3 : https://en.wikipedia.org/wiki/Design_Patterns 4 : https://golem.ph.utexas.edu/category/2012/01/ vorsicht_funktor.html
  139. L a w s • A s s o c

    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 }
  140. C u r r y - H o w 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
  141. N o t e s o n f u n

    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 .