why?• computação evoluiu
• processadores não vão melhorar (muito)
• processamento tende a aumentar
• produtividade e brevidade de código
• expressividade
• novas formas de pensar velhos problemas
pensando funcional
• é uma mudança de paradigma
• uma forma diferente de pensar e enxergar código (e os problemas que resolvemos com ele)
• ao contrário do que se pensa pode ser muito simples
high-order functions
• funções podem ser passadas como argumentos
• funções podem ser retornadas como resultado
• (e obviamente funções podem receber e retornar funções)
imutabilidade• não se pode modificar dados
• é preciso usar uma abordagem de transformação
• previsibilidade
• confiança
pure functions
• funções não causam side-effects
• independente do cenário, infra, distribuição, paralelismo, concorrência, dado um input “x” seu retorno sempre será “y” para “func(x)”