Slide 1

Slide 1 text

Javascript Funcional uma breve Introdução

Slide 2

Slide 2 text

github.com/ripfoghorn twitter.com/ripfoghorn_ 20 anos desenvolvedor back-end por 3 anos entusiasta de robôs gigantes

Slide 3

Slide 3 text

Programação Funcional?

Slide 4

Slide 4 text

Paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis.

Slide 5

Slide 5 text

?

Slide 6

Slide 6 text

Paradigma

Slide 7

Slide 7 text

Funções puras Imutabilidade de estado Composição de funções Redução de código

Slide 8

Slide 8 text

Matemática

Slide 9

Slide 9 text

f(x) = 2x + 1

Slide 10

Slide 10 text

f(3) = 2(3) + 1 = 7

Slide 11

Slide 11 text

g(y) = y + 5

Slide 12

Slide 12 text

f(g(y)) = f(y + 5) = 2(y + 5) + 1 = 2y + 11

Slide 13

Slide 13 text

Programação Funcional == Matemática

Slide 14

Slide 14 text

Funções

Slide 15

Slide 15 text

function f(x) { return 2*x + 1; }

Slide 16

Slide 16 text

function g(y) { return y + 5; }

Slide 17

Slide 17 text

console.log(f(g(3)));

Slide 18

Slide 18 text

17

Slide 19

Slide 19 text

Funções de ordem superior e funções de primeira classe

Slide 20

Slide 20 text

var composta = function(a) { return f(g(a)); }

Slide 21

Slide 21 text

composta(3) //=> 17 composta(4) //=> 19

Slide 22

Slide 22 text

Composição

Slide 23

Slide 23 text

var add1= function(x){ return x + 1; }

Slide 24

Slide 24 text

var quadrado = function(x){ return x * x; }

Slide 25

Slide 25 text

var f = function(x) { return add1(quadrado(x)); }

Slide 26

Slide 26 text

console.log(f(7)) ??

Slide 27

Slide 27 text

50

Slide 28

Slide 28 text

Funções Puras Imutabilidade de estado

Slide 29

Slide 29 text

function pura(a, b) { return a + b; }

Slide 30

Slide 30 text

var a = 1; function impura(b) { return a + b; }

Slide 31

Slide 31 text

a = new Date().getDay();

Slide 32

Slide 32 text

Estado

Slide 33

Slide 33 text

f(x) = 2x f(2) = 4

Slide 34

Slide 34 text

Arrays!

Slide 35

Slide 35 text

Curry!

Slide 36

Slide 36 text

OK, mas por que Javascript mesmo?

Slide 37

Slide 37 text

Node NPM Full-stack

Slide 38

Slide 38 text

ES6 Arrow Functions Map Reduce Filter ...

Slide 39

Slide 39 text

IIFE’s

Slide 40

Slide 40 text

(function() {...})(); (()=> {...})();

Slide 41

Slide 41 text

Underscore Lodash Ramda Immutable Fn Function

Slide 42

Slide 42 text

Fun();

Slide 43

Slide 43 text

Obrigado!