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

Post on 13-Apr-2017

391 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

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

top related