O paradigma funcional é um estilo de programação que trata a computação como a avaliação de funções matemáticas e evita o uso de estados mutáveis e efeitos colaterais.
Funções que sempre retornam o mesmo resultado para os mesmos argumentos e não têm efeitos colaterais. Facilitam a previsibilidade e a testabilidade do código.
Princípio de que uma vez que um dado é criado, ele não deve ser modificado. Em vez disso, novas versões dos dados são criadas, preservando o original.
Funções que aceitam outras funções como argumentos e/ou retornam funções. São usadas para criar abstrações mais gerais e reutilizáveis.
Técnica de criar novas funções a partir de funções existentes, fixando alguns dos argumentos e retornando uma função que aceita os argumentos restantes.
Processo de transformar uma função que aceita múltiplos argumentos em uma sequência de funções, cada uma aceitando um argumento. Facilita a composição e a aplicação parcial.
Técnica de combinar várias funções em uma única função. Permite construir funções complexas a partir de funções simples e modulares.
Funções que não possuem um nome, frequentemente usadas para operações simples e passadas como argumentos para outras funções.
Técnica de definir uma função em termos de si mesma para resolver problemas que podem ser divididos em subproblemas menores. Substitui estruturas de loop em muitos casos.
Abstrações que representam computações como sequências de operações, facilitando o encadeamento de funções e o tratamento de efeitos colaterais de maneira controlada.
Funções que não alteram o estado global ou os dados passados a elas, garantindo que o comportamento da função seja previsível e consistente.
Funções que operam sobre outras funções, como map, filter e reduce, permitindo manipulações declarativas e transformações de coleções de dados.
Estruturas de dados imutáveis que suportam operações funcionais, como listas, árvores e conjuntos, sem alterar a estrutura original.
Estratégia de avaliar expressões somente quando necessário, melhorando a eficiência e possibilitando a construção de estruturas de dados infinitas.
Tipos de dados que combinam outros tipos, como tipos somatórios (ou tipos de união) e tipos de produto, para modelar dados complexos de forma robusta.
Funções que não são de ordem superior, ou seja, não aceitam outras funções como argumentos nem retornam funções. São as funções básicas do paradigma.
Aprofundamento nas funções de alta ordem, explorando casos de uso como composição, transformação e filtragem de coleções.
Como o paradigma funcional lida com efeitos colaterais, evitando-os ou gerenciando-os através de abstrações como monads.
Abordagem onde você descreve o que deve ser feito, em vez de como fazer. No contexto funcional, foca em expressar lógica e transformar dados.
Exploração de tipos de dados mais avançados, como tipos dependentes e genéricos, que adicionam mais flexibilidade e segurança ao código funcional.