Responda conforme a questão:
Explique os conceitos de efeitos colaterais, funções de alta ordem e funções puras. (6 escores)
Explique os conceitos de efeitos colaterais, funções de alta ordem e funções puras. (6 escores)
Passo 1
O enunciado pede para explicarmos três conceitos fundamentais de programação funcional: efeitos colaterais, funções de alta ordem e funções puras. Para isso vamos, em cada passo seguinte, definir o conceito, apontar por que ele importa e dar um exemplo ilustrativo.
Passo 2
Efeitos colaterais são qualquer interação que uma função tem com o “mundo exterior” além de calcular e devolver seu valor. Em geral isso inclui:
- Modificar variáveis ou estruturas de dados fora do seu escopo.
- Fazer operações de entrada/saída (leitura de arquivo, escrita no console, acesso a banco).
- Lançar exceções ou abortar a execução do programa de forma inesperada.
Esses efeitos dificultam testes e raciocínio formal, pois invocar a mesma função pode produzir resultados diferentes dependendo do estado externo.
Passo 3
Funções de alta ordem são funções que podem receber outras funções como argumentos e/ou devolver funções como resultado. Isso permite abstrair comportamentos, compor soluções e criar APIs genéricas. Exemplos clássicos:
map(f, lista)
recebe a funçãof
e aplica-a a cada elemento delista
.filter(predicado, lista)
usa opredicado
para escolher elementos.- Funções que retornam “configurações” ou “callbacks” a partir de parâmetros de alto nível.
Passo 4
Funções puras são aquelas que, para os mesmos parâmetros de entrada, sempre retornam o mesmo valor e não causam efeitos colaterais. Propriedades principais:
- Determinismo e transparência referencial (substituir a chamada pelo resultado não altera o comportamento do programa).
- Fácil teste unitário e raciocínio formal.
- Possibilidade de memoização/cache e paralelização sem risco de condição de corrida.
Resposta
• Efeitos colaterais: alterações de estado externo ou I/O feitas pela função, que tornam seu comportamento dependente de variáveis ou ambiente além dos parâmetros.
• Funções de alta ordem: funções que recebem outras funções como argumento e/ou retornam funções, viabilizando abstração e composição de comportamentos.
• Funções puras: funções que sempre produzem o mesmo resultado para os mesmos argumentos e não provocam efeitos colaterais, garantindo previsibilidade e testabilidade.
• Funções de alta ordem: funções que recebem outras funções como argumento e/ou retornam funções, viabilizando abstração e composição de comportamentos.
• Funções puras: funções que sempre produzem o mesmo resultado para os mesmos argumentos e não provocam efeitos colaterais, garantindo previsibilidade e testabilidade.