Programação Funcional

Introdução

Hoje venho trazer um resumo bem tranquilo para explicar o quê é programação funcional.
Inicialmente, vamos começar fazendo um contraponto com a programação imperativa.

Programação Imperativa

No código seguinte definimos uma função que retorna o quadrado da soma de duas variáveis.

public float squared_sum(x,y) {
	sum = x+y;
	squared = sum**2;
	return squared
}

Essa função faz com que o computador guarde na memória a variável soma, a variável squared e os respectivos valores. Esses são chamados efeitos colaterais.

Programação Funcional/Declarativa

Agora vamos transformar o mesmo código para programação funcional.

public float squared_sum(x,y){
	return (x+y)^2;
}

Note-se que retiramos as variáveis e fizemos todas as operações no próprio return. Essa mudança elimina os efeitos colaterais que falamos antes , ou seja, nesse caso não estamos mais ocupando espaço na memória para fazer essa operação.

Mas o quê é afinal programação funcional?

Programação funcional é um método de resolução de problemas que tem como objetivo construir software por meio de composição de funções puras, evitando compartilhamento de estados, dados mutáveis e efeitos colaterais.

Funções Puras

Uma função é chamada de pura quando, se invocada mais de uma vez com os mesmos parâmetros, produz exatamente o mesmo resultado.
Além disso, é necessário que ela não cause efeitos colaterais externos como imprimir linha de saída, alterar algo no banco, guardar algo na memória, etc.

Composição de funções

Com esses conceitos em mente, podemos fazer composições de funções, tornando nossas operações mais complexas. Pode parecer algo diferente, mas você já pode ter visto em diversas situações.

Em suma, isso significa criar uma nova função por meio da composição de outras.

No exemplo seguinte temos uma função que filtra um array retirando apenas os números pares e, por fim, multiplicando por 2.

const numeros = [2,3,4,5,6,7,8,9,10]

numeros.filter((numero) => numero % 2 === 0).map((numero) => numero * 2) 
// [ 4, 8, 12, 16, 20 ]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *