18
functional programming @vquaiato |> vinicius |> quaiato |> lambda3

Functional programming

Embed Size (px)

Citation preview

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