breve introdução a programação funcional com javascript
TRANSCRIPT
Programação funcional
E um pouco de JavaScript
Deivis C. Wingert
/DeivisWingert
/Deivis
“Programação funcional, assim como a orientação a objetos, é uma forma de se pensar em como resolver
problemas”
Um pouco de história
Hoje
Nuvem
Servidores distribuídos
Programação concorrente
Vantagens
Melhor modularidade
Menos sujeito a efeitos colaterais
Reusabilidade
Programação concorrente
Sobre o paradigma
Funções == objetoImutabilidadeRecursividadeLamdaIndependência de estado
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.
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
Funções de primeira classe
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
Funções de alta ordem
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
Clousures
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.
Currying
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
Funções puras
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
Funções mais comuns
Map
Reduce
Filter
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
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)
Map• Referência:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
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.
Filter• Referência:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
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.
Reduce• Referência:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Exemplos
/Deivis/Functional-Programming
Perguntas ?
Obrigado