Slide 1

Slide 1 text

Por que Por que functional programming functional programming é mais rápido? é mais rápido?

Slide 2

Slide 2 text

Irio Musskopf Um-dia-quem-sabe-formado Matemático Trabalhando pra Neighborly(.com)

Slide 3

Slide 3 text

(Re)vendo conceitos (Re)vendo conceitos

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

100 103,5

Slide 6

Slide 6 text

(10, 42) 105

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

∠A + ∠B + ∠C = 180˚, ∀ ΔABC

Slide 9

Slide 9 text

Moses Schönfinkel 1889 - 1942 Haskell Curry 1900 - 1982 Alonzo Church 1903 - 1995 Cálculo Cálculo λ λ

Slide 10

Slide 10 text

> let grossAmount price = price * 1.03 > grossAmount 100 103.0 > grossAmount 100 103.0 -- $ ghci

Slide 11

Slide 11 text

rand (http://goo.gl/0BaCQp) IO Exceções Exceções

Slide 12

Slide 12 text

Immutability -> memoization

Slide 13

Slide 13 text

> let investments = [1000, 500] > let investmentsCount = length(investments) > let amount = sum(investments) > let average = amount / investmentsCount > print average 750.0 -- $ ghci

Slide 14

Slide 14 text

Immutability -> memoization Lazy evaluation

Slide 15

Slide 15 text

> insert(a_collection, 42) > remove(a_collection, 42) -- $ ghci

Slide 16

Slide 16 text

> insert(a_collection, 42) >>= remove(a_collection, 42) -- $ ghci

Slide 17

Slide 17 text

Immutability -> memoization Lazy evaluation Monads

Slide 18

Slide 18 text

> let multiplyAndSum x y = (x + x + x + x) + (y + y + y + y) -- $ ghci

Slide 19

Slide 19 text

> let multiplyAndSum x y = (x + x + x + x) + (y + y + y + y) > let multiplyAndSum x y = 4 * x + 4 * y -- $ ghci

Slide 20

Slide 20 text

> let multiplyAndSum x y = (x + x + x + x) + (y + y + y + y) > let multiplyAndSum x y = 4 * x + 4 * y > let multiplyAndSum x y = 4 * (x + y) -- $ ghci

Slide 21

Slide 21 text

Immutability -> memoization Lazy evaluation Monads Compile-time optimizations

Slide 22

Slide 22 text

scala> Stream.from(1). filter(_ < 100). map(_ + 1). take(2). toList // $ sbt console > take 2 $ map (+1) $ filter (<100) [1..] -- $ ghci tudoaomesmotempoagora tudoaomesmotempoagora

Slide 23

Slide 23 text

Não será mais rápido que procedural às vezes será

Slide 24

Slide 24 text

MapReduce

Slide 25

Slide 25 text

Obrigado! Obrigado! @irio [email protected]