Slide 1

Slide 1 text

T h e o r e m s f o r f r e e ! L a r s H u p e l M u n i H a c 2 0 2 0 - 0 9 - 1 1

Slide 2

Slide 2 text

No content

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

T y p e s i n H a s k e l l

Slide 5

Slide 5 text

T y p e b a s i c s • t y p e v a r i a b l e s a r e l o w e r c a s e • a l l t y p e s a r e e r a s e d ( i g n o r i n g c l a s s e s f o r n o w )

Slide 6

Slide 6 text

W h a t H a s k e l l s e e s : id :: a -> a

Slide 7

Slide 7 text

W h a t H a s k e l l s e e s : id :: a -> a W h a t t h e r u n t i m e s e e s : id :: Word -> Word

Slide 8

Slide 8 text

F o l k l o r e s a y s : T h e m o r e t y p e v a r i a b l e s , t h e m e r r i e r !

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

M o r e t y p e v a r i a b l e s ! . . . b u t w h y ?

Slide 11

Slide 11 text

W e c a n r e a s o n a b o u t t y p e s ! . . . b u t h o w ?

Slide 12

Slide 12 text

S e t s i n m a t h e m a t i c s

Slide 13

Slide 13 text

I n s e t t h e o r y , e v e r y t h i n g 1 i s a s e t . F o r e x a m p l e : N = {0 , 1 , 2 , . . .} 1 a l m o s t

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

F u n c t i o n s a r e s e t s f = {(▲, ●), (■, ●), . . .}

Slide 16

Slide 16 text

T y p e s a r e s e t s Bool = {True, False} Integer = {. . . , −2 , −1 , 0 , 1 , 2 , . . .} (a , b ) = a × b a → b = t h e s e t o f a l l f u n c t i o n s f r o m a t o b

Slide 17

Slide 17 text

K e y i n s i g h t : T h e r e a r e m a n y d i f f e r e n t i n t e r p r e t a t i o n s o f t y p e s .

Slide 18

Slide 18 text

S i d e n o t e W a d l e r ’s p a p e r u s e s A ∗ i n s t e a d o f [a]. A n y i d e a w h y ?

Slide 19

Slide 19 text

R e l a t i o n s

Slide 20

Slide 20 text

R e l a t i o n R b e t w e e n A a n d B : R ⊆ A × B

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

T y p e s a r e r e l a t i o n s W e c a n a s s i g n e v e r y t y p e t a r e l a t i o n r e l t .

Slide 23

Slide 23 text

T y p e s a r e r e l a t i o n s W e c a n a s s i g n e v e r y t y p e t a r e l a t i o n r e l t . T h i s r e l a t i o n w i l l r e l a t e v a l u e s o f t : r e l t ⊆ t × t

Slide 24

Slide 24 text

G r o u n d t y p e s . . . a r e i d e n t i t y r e l a t i o n s r e l Bool = {(True, True), (False, False)} r e l Integer = {(n , n ) ∣ n ∈ Z}

Slide 25

Slide 25 text

L i s t s W e h a v e a r e l a t i o n f o r a . W e w a n t t o c h e c k i f x s , y s ∶ [a ] a r e r e l a t e d .

Slide 26

Slide 26 text

L i s t s W e h a v e a r e l a t i o n f o r a . W e w a n t t o c h e c k i f x s , y s ∶ [a ] a r e r e l a t e d . ⟶ x s a n d y s n e e d t o b e t h e s a m e l e n g t h a n d p a i r w i s e r e l a t e d

Slide 27

Slide 27 text

L i s t s : e x a m p l e L e t r e l a x y = (y = 2 ⋅ x ) [] [] [1 , 2 ] [2 , 4 ] [1 , 2 ] [2 , 4 , 6 ] [1 , 2 ] [0 , 1 ]

Slide 28

Slide 28 text

F u n c t i o n s W h e n a r e t w o f u n c t i o n s r e l a t e d ? W h e n t h e y s e n d r e l a t e d i n p u t s t o r e l a t e d o u t p u t s .

Slide 29

Slide 29 text

F u n c t i o n s f ∶ a → b a n d g ∶ a → b a r e r e l a t e d i f : ∀x , y ∈ a . (x , y ) ∈ r e l a ⟹ (f x , g y ) ∈ r e l b

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

P a r a m e t r i c i t y

Slide 33

Slide 33 text

T h e p a r a m e t r i c i t y t h e o r e m I f t i s a c l o s e d t e r m o f t y p e T , t h e n (t , t ) ∈ r e l T .

Slide 34

Slide 34 text

T h e p a r a m e t r i c i t y t h e o r e m I f t i s a c l o s e d t e r m o f t y p e T , t h e n (t , t ) ∈ r e l T . I n o t h e r w o r d s : e v e r y t e r m i s r e l a t e d t o i t s e l f

Slide 35

Slide 35 text

L e t ’s s a y w e h a v e a f u n c t i o n o n m a p s . frobnicate :: [a] -> [a]

Slide 36

Slide 36 text

L e t ’s s a y w e h a v e a f u n c t i o n o n m a p s . frobnicate :: [a] -> [a] P a r a m e t r i c i t y s t a t e s : (frobnicate, frobnicate) ∈

Slide 37

Slide 37 text

L e t ’s s a y w e h a v e a f u n c t i o n o n m a p s . frobnicate :: [a] -> [a] P a r a m e t r i c i t y s t a t e s : (frobnicate, frobnicate) ∈ W e c a n p r o v e : frobnicate (map g x s ) = map g (frobnicate x s )

Slide 38

Slide 38 text

N o w w h a t ?

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

R e a s o n i n g a b o u t t y p e s M o t t o : F u n c t i o n s w i t h t y p e v a r i a b l e s . . . • d o n ’ t k n o w a n y t h i n g • c a n ’ t d o m u c h

Slide 41

Slide 41 text

I n p r a c t i s e T h e s e c o n d Functor l a w i s r e d u n d a n t . I t i s s u f f i c i e n t t o p r o v e t h a t fmap id = id.

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

A n o t h e r f r e e t h e o r e m A f u n c t i o n w i t h t y p e (a -> b) -> [a] -> [b] i s e i t h e r 1 . map, o r 2 . map w i t h r e a r r a n g e m e n t s

Slide 44

Slide 44 text

R e s t r i c t i o n s ⊥ d e s t r o y s e v e r y t h i n g 2 2 n o t e v e r y t h i n g

Slide 45

Slide 45 text

E x t e n s i o n s W e h a v e i g n o r e d c l a s s e s ( s o f a r ) b e c a u s e t h e y c o m p l i c a t e t h i n g s .

Slide 46

Slide 46 text

E x t e n s i o n s W e h a v e i g n o r e d c l a s s e s ( s o f a r ) b e c a u s e t h e y c o m p l i c a t e t h i n g s . C l a s s e s c a n b e m o d e l l e d a s d i c t i o n a r i e s w i t h ( p o t e n t i a l l y ) r a n k - 2 t y p e s

Slide 47

Slide 47 text

Q & A L a r s H u p e l � l a r s . h u p e l @ i n n o q . c o m � @ l a r s r _ h 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

Slide 48

Slide 48 text

L A R S H U P E L 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 a r s e n j o y s p r o g r a m m i n g i n a v a r i e t y o f l a n - g u a g e s , i n c l u d i n g S c a l a , H a s k e l l , a n d R u s t . H e i s k n o w n a s a f r e q u e n t c o n f e r e n c e s p e a k e r a n d o n e o f t h e f o u n d e r s o f t h e T y p e l e v e l i n i t i a t i v e w h i c h i s d e d i c a t e d t o p r o v i d i n g p r i n c i p l e d , t y p e - d r i v e n S c a l a l i b r a r i e s .

Slide 49

Slide 49 text

C r e d i t s • J o h n C . R e y n o l d s : https://commons.wikimedia.org/w/index.php?title=File: Reynolds_John_small.jpg&oldid=452226049, A n d r e j B a u e r , C C - B Y - S A 2 . 5 • P h i l i p W a d l e r : https://commons.wikimedia.org/w/index.php?title=File: Wadler2.JPG&oldid=262214892, C l q , C C - B Y 3 . 0 • F u n c t i o n : https://commons.wikimedia.org/w/index.php?title=File: Function_color_example_3.svg&oldid=321533277, W v b a i l e y , C C - B Y - S A 3 . 0 • F r e e T h e o r e m s : https://free-theorems.nomeata.de/, J o a c h i m B r e i t n e r e t a l .