A programação funcional basea-se em funções matemáticas puras e imutabilidade de dados como principal artifício; isto é, em vez de dizer como um computador deve processar, diz-se o que quer obter. Descrevendo assim as relações e transformações de dados.
Funções puras são aquelas cujo resultado depende apenas de valores recebidos como entrada e não produzam efeitos colaterais - Ou seja, não alterem variáveis externas, não modifique arquivos, nem acessem dados fora de seu escopo. Assim, para os mesmos argumentos, retornam sempre o mesmo resultado.
No paradigma funcional, os dados são imutáveis, o que significa que não podem ser alterados após terem o seu valor atribuido. Ao invés de atribuir um novo valor à mesma variável, cria-se uma nova versão com as mudanças necessárias evitando assim comportamentos inesperados.
Funções de alta ordem são aquelas que recebem funções como parâmetro e/ou retornam funções como resultado. Este artifício da programação funcional permite criar operações genéricas e reutilizáveis (como o map, filter e reduce).
Em linguagens de paradigma funcional, a recursão é usada para no lugar de laços tradicionais como "while" e "for" por não haver variáveis mutáveis. Uma função recursiva chama a si mesma com parâmetros diferentes até atingir uma condição de parada, permitindo repetir cálculos de forma segura e declarativa.
Uma versão em inglẽs desta nota será lançada ao final do curso de PF -> Até lá, a mesma será modificada conforme o meu aprendizado for ampliando.