Você está na página 1de 25

Programação Funcional Com

JavaScript
Débora Amorim

1
Paradigma Uma forma de abstrair problemas complexos.

Funcional Origem em como cálculos matemáticos eram


modularizados por meio de funções.

Um cálculo que envolvesse sempre as mesmas


funções, se tornava uma nova função
encapsulando as demais.

Origem

2
Paradigma Funcional

Conceitos Vantagens

● Função Pura ● Processamento paralelo


● First-class Function ● Código mais conciso
● Higher-Order Function ● Mais simples de testar
● Funções Como Valores
● Imutabilidade
● Composição de Funções

3
Função Pura O valor de retorno é determinado
apenas pelos valores de entrada.

Não há efeitos colaterais


observáveis.

Na prática é difícil construir o


código utilizando apenas funções
puras.

</>
4
Implementação

5
First-Class Uma linguagem de programação só pode
ser considerada funcional se tratar suas
Function funções como first-class citizen, ou seja,
funções são objetos/entidades/valores.

6
First-Class Function

Características

● Atribuir função a uma variável

● Passar a função como parâmetro para outra função

● Ter como retorno de uma função, outra função

● Armazenar funções em estruturas de dados

7
Implementação

8
Higher-Order Funções que operam em outras funções,
tomando-as como argumento ou
Function retornando-as.

9
Higher-Order Function

Características

● Torna o código declarativo

● É o conceito chave para conceitos mais complexos, como: closure, currying,


promises...

● Conseguimos generalizar funções para que sejam reutilizadas de maneiras


diferentes quando necessário.

10
Implementação

11
Callback Função passada como parâmetro para
outra função e é chamada de volta (called
back) quando um processamento,
normalmente assíncrono, termina.

12
Implementação

13
Promises São um padrão de desenvolvimento que
visam representar a conclusão de
operações assíncronas.

Não eram nativas do JS até o ES6, quando


houve uma implementação oficial na
linguagem.

“Na volta a gente compra..” ou não Antes delas a maioria das funções
-Mamãe usavam callbacks.

14
Implementação

15
Imutabilidade A utilização do conceito de imutabilidade
permite maior controle do que acontece
em seu código e previne que sejam
redefinidos valores para variáveis que
não poderiam ser alteradas.

Manter os valores constantes economiza


processamento de sua aplicação pois ela
não precisa consultar sempre este item,
após alocado uma vez na memória o
estado se mantém.

16
Closure Uma closure ocorre normalmente
quando uma função é declarada dentro
do corpo de outra, e a função interior
referencia variáveis locais da função
exterior.

17
Implementação

18
Currying Uma função que receba múltiplos
parâmetros é transformada para que seja
chamada como uma cadeia de funções
que recebem um único parâmetro cada.

19
Implementação

20
Lazy Evaluation Quando utilizamos currying, compondo
funções, torna-se interessante “atrasar” o
processamento até o momento em que o
resultado seja realmente necessário.

21
Implementação

22
Composição de Um dos mais importantes conceitos da
programação funcional.
Funções Bastante semelhante ao que acontece no
uso das Promises, onde compomos
funções por meio do .then

23
Implementação

24
Obrigada!

Códigos de exemplo:
https://github.com/DebAmorim/programacao-funcional-javascript

25

Você também pode gostar