Javascript Funcional 

menos código, menos bugs

@Vitormalencar

+Vitor Alencar

Agenda

  • O que e?

  • e com js  ?

  • higher order functions

    • filter

    • curry

    • map

    • reduce

  • Podemos Usar ?

O que é Programação Funcional ?

O que é Programação Funcional ?

Paradigma de programação

estilo de vida 

Programação Funcional com Js ?

Programação orientada a objetos

(prototypes,this.....)

Como iniciar ?

Como iniciar ?

>

Input -> output

A função abaixo possui inputs e outputs bem definidos:

 

function square(x) {
    return x * x;
}

square(2); // 4

A função abaixo porém, não possui inputs e outputs tão bem definidos:

 

 

function generateDate() {
    var date = new Date();
    generate(date);
}

generateDate(); // ???

Evitar Efeitos Colaterais (side-effects)

usando Funções "Puras"

var nome = 'Vitor';


function sayHi(){
    console.log('oi' + nome)
}
function sayHi(nome){
    return 'oi' + nome;
}

Higher-Order Functions

Filter

Filter

Composição

Currying

Currying

Currying

MAP

MAP

REDUCE

REDUCE

REDUCE

SHOW ME THE CODE 

<DEVFEST>

Title Text

npm install --global babel

Fun.js

By Roberto Vitor Maia