The Essence of Programming

The Essence of Programming

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

Dd7d72257cfd7d419b93bfe5dbc087c8?s=128

Ludvig Sundström

February 28, 2020
Tweet

Transcript

  1. 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. 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. 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. 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. 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. 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. 7.

    S t o c k h o l m ,

    S w e d e n
  8. 8.
  9. 10.
  10. 11.

    • H a s k e l l • C

    l o j u r e • E r l a n g
  11. 12.

    • 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
  12. 13.

    • 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 .
  13. 14.

    λ

  14. 15.

    U p p s a l a , S c

    h w e d e n
  15. 17.
  16. 18.
  17. 19.
  18. 20.
  19. 21.

    A v o i d ! • Q u i

    c k f i x e s
  20. 22.

    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
  21. 23.

    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
  22. 24.

    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 ”
  23. 25.
  24. 26.

    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 …
  25. 27.
  26. 28.

    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 …
  27. 29.

    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 ]
  28. 30.

    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
  29. 31.

    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
  30. 32.

    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 ”
  31. 33.

    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
  32. 34.

    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
  33. 35.

    “ 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
  34. 36.

    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
  35. 37.

    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
  36. 38.

    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
  37. 39.

    W e s h o u l d … •

    H a v e a n o p e n m i n d
  38. 40.

    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
  39. 41.

    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
  40. 42.

    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 !
  41. 44.

    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
  42. 45.

    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 ]
  43. 46.

    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
  44. 47.

    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
  45. 48.

    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
  46. 49.

    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
  47. 50.
  48. 51.

    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
  49. 52.
  50. 53.

    • 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 ? )
  51. 54.

    • 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 ?
  52. 56.

    C S : 1 0 1 D i v i

    d e a n d C o n q u e r
  53. 57.

    • 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
  54. 58.

    • 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
  55. 59.

    • 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 )
  56. 60.

    C S : 1 0 1 D i v i

    d e a n d C o n q u e r
  57. 61.

    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
  58. 62.

    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
  59. 63.

    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
  60. 64.

    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
  61. 65.

    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 )
  62. 66.

    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 ?
  63. 67.

    E n t e r t h e f u

    n c t i o n
  64. 68.
  65. 69.

    • 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
  66. 70.

    • 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
  67. 71.

    • 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
  68. 72.

    • 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 …
  69. 73.

    • 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
  70. 74.

    • 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 )
  71. 75.

    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
  72. 76.

    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
  73. 77.

    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 !
  74. 78.

    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 !
  75. 79.

    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 )
  76. 80.
  77. 81.

    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
  78. 82.

    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
  79. 83.

    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
  80. 84.

    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 …
  81. 85.
  82. 86.

    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
  83. 87.

    O k , s h o w m e w

    h a t a c a t e g o r y i s .
  84. 88.
  85. 89.
  86. 90.
  87. 91.
  88. 92.
  89. 93.
  90. 94.
  91. 95.
  92. 96.
  93. 98.

    • 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
  94. 99.

    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 !
  95. 100.

    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
  96. 101.

    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
  97. 102.

    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
  98. 103.

    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
  99. 104.
  100. 105.
  101. 106.
  102. 107.
  103. 108.
  104. 109.
  105. 110.
  106. 111.
  107. 112.
  108. 113.

    P r o g r a m m e r

    s C a t e g o r y
  109. 114.

    • P r o g r a m m e

    r s t a l k i n d a t a …
  110. 115.

    • 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
  111. 116.

    • 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 …
  112. 117.

    • 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
  113. 118.

    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
  114. 119.

    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
  115. 120.

    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
  116. 121.

    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
  117. 122.

    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 !
  118. 123.
  119. 124.
  120. 125.
  121. 126.
  122. 127.
  123. 128.
  124. 129.
  125. 130.

    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
  126. 131.

    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 …
  127. 132.

    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 )
  128. 133.
  129. 134.
  130. 135.
  131. 136.
  132. 137.
  133. 138.
  134. 139.

    F u n c t o r s i n

    P r o g r a m m i n g
  135. 140.
  136. 141.
  137. 142.
  138. 143.

    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
  139. 144.

    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)
  140. 145.

    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 ?
  141. 146.

    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 .
  142. 147.

    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
  143. 148.

    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)
  144. 151.
  145. 152.
  146. 153.
  147. 155.
  148. 156.
  149. 157.
  150. 158.
  151. 159.

    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
  152. 160.

    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
  153. 161.

    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 !
  154. 162.

    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
  155. 163.
  156. 164.

    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
  157. 165.

    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
  158. 166.

    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
  159. 167.

    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 !
  160. 168.

    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 !
  161. 169.

    -- -- How to make List a functor -- instance

    Functor [] where fmap g xs = map g xs
  162. 170.

    -- -- How to make Maybe a functor -- instance

    Functor Maybe where fmap g (Just x) = Just (g x) fmap g Nothing = Nothing
  163. 171.

    -- -- How to make IO a functor -- instance

    Functor IO where fmap g action = do x <- action return (g x)
  164. 172.
  165. 173.
  166. 174.
  167. 175.
  168. 176.
  169. 177.
  170. 178.

    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
  171. 179.

    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
  172. 180.

    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
  173. 181.

    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
  174. 182.

    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
  175. 183.

    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
  176. 184.

    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
  177. 185.
  178. 186.
  179. 187.

    • 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
  180. 188.

    • 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 :
  181. 189.

    • 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
  182. 190.

    • 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
  183. 191.

    • 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
  184. 192.

    • 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 …
  185. 193.
  186. 194.

    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
  187. 195.

    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
  188. 196.

    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
  189. 197.

    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
  190. 198.

    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
  191. 199.

    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
  192. 200.

    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
  193. 201.

    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
  194. 202.

    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
  195. 203.

    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
  196. 204.

    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
  197. 205.

    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
  198. 206.

    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 …
  199. 207.

    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
  200. 208.

    S t r u c t u r i z

    e , d o n ’ t o p t i m i z e
  201. 209.

    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
  202. 210.

    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
  203. 211.

    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 }
  204. 212.

    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
  205. 213.

    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 .