38
Thinking Functionally Ronen Cohen, AppsFlyer A Primer

A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Thinking Functionally

Ronen Cohen, AppsFlyer

A Primer

Page 2: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Ronen Cohen Senior Tech Lead Data Platform, AppsFlyer @nenorbot

Page 3: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Mobile Analytics & Attribution Platform

Meet AppsFlyer

15 Offices

Worldwide

650+ Employees

70k+ Clients

3500+ Integrated Partners

70% Market share

Page 4: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Thinking Functionally

Page 5: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

● Declarative over Imperative

● Pure functions

● Immutability

● Functions as first-class citizens

● Composition

Page 6: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Conway’s Game of Life

Page 7: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Rules

Page 8: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Any Live Cell With: ● Fewer than two live neighbours dies, as if by

underpopulation. ● Two or three live neighbours lives on to the next

generation. ● More than three live neighbours dies, as if by

overpopulation.

OR ● Any dead cell with exactly three live neighbours

becomes a live cell, as if by reproduction.

Page 9: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 10: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Rules, as Code

Page 11: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 12: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

● Always return the same result given the same arguments

● No side-effects:

○ No I/O

■ No Files / devices / network / etc

■ No Randomness

■ No Time

○ No dependence on state

Pure Functions

Page 13: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

● Simple to reason about

● Simple to test

● Parallelizable

● Composable

Pure Functions

Page 14: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 15: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Transitioning the Board

Page 16: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 17: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 18: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 19: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 20: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 21: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 22: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 23: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

● Mutation:

○ Introduces a layer of complexity

○ Concurrency is harder

● Immutability

○ Inefficient?

■ Depends on implementation

■ Persistent data-structures (i.e, Clojure)

Page 24: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Transitioning the Board Take Two

Page 25: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 26: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 27: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Transitioning the Board Take Three

Page 28: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 29: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 30: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 31: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Functions are First-Class citizens

Page 32: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

• Functions are first-class citizens:

– Can be passed as arguments.

– Can be returned from other functions.

• Declarative rather than imperative. map(lambda x: x*x, [1,2,3,4,5]) => [1, 4, 9, 16, 25]

filter(lambda x: x % 2 == 0, [1, 4, 9, 16, 25]) => [4, 16]

Page 33: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 34: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 35: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 36: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game
Page 37: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

● Declarative over Imperative

● Pure functions

● Immutability

● Functions as first-class citizens

● Composition

Page 38: A Primer Thinking Functionally€¦ · Thinking Functionally Declarative over Imperative Pure functions Immutability Functions as first-class citizens Composition . Conway’s Game

Thank You!

[email protected] @nenorbot

https://github.com/nenorbot/devweeknyc2019