functional
programming
@vquaiato
|> vinicius
|> quaiato
|> lambda3
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
challenges?
• concorrência
• paralelismo
• tolerância a falhas
what?
• first-class functions
• high-order functions
• imutabilidade
• pure functions
• closures
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
first-class functions
• funções são tipos, podem ser armazenadas em
variáveis
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)”
mais coisas legais
• pattern matching <3
• pensem nele como um “switch” que é 13
memo, BIRL!
quais linguagens
estudar?
• Erlang
• Elixir
• F#
• Haskell
• Scala
• Go
flw vlw

Functional programming