breve introdução a programação funcional com javascript

29
Programação funcional E um pouco de JavaScript

Upload: deivis-wingert

Post on 13-Apr-2017

391 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Breve introdução a programação funcional com JavaScript

Programação funcional

E um pouco de JavaScript

Page 2: Breve introdução a programação funcional com JavaScript

Deivis C. Wingert

/DeivisWingert

/Deivis

Page 3: Breve introdução a programação funcional com JavaScript

“Programação funcional, assim como a orientação a objetos, é uma forma de se pensar em como resolver

problemas”

Page 4: Breve introdução a programação funcional com JavaScript

Um pouco de história

Page 5: Breve introdução a programação funcional com JavaScript

Hoje

Nuvem

Servidores distribuídos

Programação concorrente

Page 6: Breve introdução a programação funcional com JavaScript

Vantagens

Melhor modularidade

Menos sujeito a efeitos colaterais

Reusabilidade

Programação concorrente

Page 7: Breve introdução a programação funcional com JavaScript

Sobre o paradigma

Funções == objetoImutabilidadeRecursividadeLamdaIndependência de estado

Page 8: Breve introdução a programação funcional com JavaScript

Sobre o paradigma

- Função é a menor parte de um programa- Na programação funcional nos preocupamos

em dizer a maquina o que queremos fazer e não como iremos fazer.

- A execução das expressões é controlada por condições e recursividade e não iterações diretas como ocorre nos paradigmas imperativos.

Page 9: Breve introdução a programação funcional com JavaScript

Sobre o paradigma

- Variáveis e estados imutáveis.

- Funções não dependem do estado do sistema.

- Lambda: funções recebendo e retornando funções ou resultados das mesmas

Page 10: Breve introdução a programação funcional com JavaScript

Funções de primeira classe

Page 11: Breve introdução a programação funcional com JavaScript

Funções de primeira classe

- Funções mais simples que podem ser representadas apenas com números.

- São atribuídas a uma variável

- Não e não recebem parâmetros complexos

Page 12: Breve introdução a programação funcional com JavaScript

Funções de alta ordem

Page 13: Breve introdução a programação funcional com JavaScript

Funções de alta ordem

- Funções mais complexas onde pode haver uma ou mais funções internas.

- Podem ter escopo compartilhado.

- Recebem funções e retornam funções

Page 14: Breve introdução a programação funcional com JavaScript

Clousures

Page 15: Breve introdução a programação funcional com JavaScript

Closures

- Funções que possuem funções filhas que tem acesso as variáveis do escopo da função pai

- Você pode salvar algum dado dentro de uma função que é apenas acessível à função de retorno , isto é, a função retornada mantém seu ambiente de execução.

- Call-backs podem ser considerados clousures.

Page 16: Breve introdução a programação funcional com JavaScript

Currying

Page 17: Breve introdução a programação funcional com JavaScript

Currying

- Em linhas gerais currying é uma função com argumentos simples que simplifica outra função mais complexa.

- Não afeta a função simplificada

Page 18: Breve introdução a programação funcional com JavaScript

Funções puras

Page 19: Breve introdução a programação funcional com JavaScript

Funções puras

- Funções onde dado um ou mais parâmetros de entrada a será a mesma para toas as vezes que estes parâmetros forem recebidos.

- Não dependem de variáveis externas, recebem dados e retornam dados.

- Não causa nem um tipo de efeito colateral

Page 20: Breve introdução a programação funcional com JavaScript

Funções mais comuns

Map

Reduce

Filter

Page 21: Breve introdução a programação funcional com JavaScript

Funções mais comuns

• O JavaScript desde sua versão 5 de 2011, ECMA-262 passou a implementar, map, reduce e filter como protótipos de array

Page 22: Breve introdução a programação funcional com JavaScript

Map- Itera um Array executando uma função de call-back

sobre cada item do Array, retornando uma lista nova, normalmente modificada.

- A função map() recebe dois parâmetros , onde primeiro parâmetro é uma função de call-back.

- O segundo parâmetro é utilizado para especificar o valor para o escopo da função.

- O mais importante são os parâmetros passados para a função de call-back, o elemento do Array em si, o índice do Array, e todo o Array (contexto)

Page 23: Breve introdução a programação funcional com JavaScript

Map• Referência:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

Page 24: Breve introdução a programação funcional com JavaScript

Filter

- Os parâmetros da função filter são exatamente os mesmos da função map().

- E como o nome sugere ela filtra alguma coisa em um array.

- O filtro é criado a partir da logica da função de call-back passada como parâmetro.

Page 25: Breve introdução a programação funcional com JavaScript

Filter• Referência:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Page 26: Breve introdução a programação funcional com JavaScript

Reduce- Itera um Array da mesma maneira que o map, mas

retorna a soma dos resultados da função de call-back recebida.

- Assim como map, reduce recebe dois argumentos. - O primeiro é novamente a função de callback, que

será chamada para cada elemento no Array. - O segundo parâmetro é o initialValue que será

utilizado para somar ao próximo valor. Caso não seja informado o primeiro valor do array é o initialValue.

Page 27: Breve introdução a programação funcional com JavaScript

Reduce• Referência:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Page 28: Breve introdução a programação funcional com JavaScript

Exemplos

/Deivis/Functional-Programming

Page 29: Breve introdução a programação funcional com JavaScript

Perguntas ?

Obrigado