Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Benefícios da Programação Funcional em JavaScript

Benefícios da Programação Funcional em JavaScript

A talk tenta responder três perguntas:

- O quê é a programação funcional?
- Quais suas características e benefícios?
- Como obtê-los no JavaScript?

Vitor Luiz Cavalcanti

March 05, 2020
Tweet

More Decks by Vitor Luiz Cavalcanti

Other Decks in Programming

Transcript

  1. Benefícios da Programação Funcional em JavaScript O quê é programação

    funcional, quais seus benefícios e como obtê-los com JavaScript (no Front-End).
  2. Sobre mim e o quê eu faço @VitorLuizC em todas

    as redes sociais (LinkedIn, Twitter, GitHub etc). • Engenheiro Front-End na Linte • Organizador do TypeScript Brasil • Mantenedor de +30 bibliotecas / micro-frameworks
  3. "FP é um paradigma que resume computação a execução de

    funções e evita mutabilidade e efeitos colaterais."
  4. Alguns parênteses sobre esse resumo • Não existe programa sem

    mutabilidade e efeitos colaterais. • Mutabilidade muitas vezes é um efeito colateral e vice-versa. • O conceito de IO pode resumir um pouco imutabilidade e efeitos colaterais.
  5. Na matemática a função é uma relação entre dois conjuntos.

    Ela define os parâmetros de entrada e a expressão para saída.
  6. Em paradigmas imperativos, funções são tarefas, que podem ser separadas

    para reuso e modularidade. Métodos, procedimentos e sub-rotinas são sinônimos de funções.
  7. • Não são anônimas, elas precisam ter um nome. •

    São içadas para o topo do escopo onde foram declaradas.
  8. • Não são içadas para o topo do escopo de

    onde foram declaradas. • Podem ser definidas sem um nome, porque a referência usada para acessá-las é a variável ou o parâmetro.
  9. • Function Expressions. • Não tem acesso ao `this` ou

    ao `arguments`. O `this` que elas acessam é do escopo onde foram declaradas.
  10. • Toda função implementa o construtor `Function`. • O JavaScript

    provê métodos para manipularmos funções, além de algumas propriedades.
  11. Cidadãos de primeira classe - Podem ser retornados por outras

    funções. - Podem ser guardados em variáveis. - Podem ser recebidos como argumentos.
  12. - Funções que retornam funções. - Uma maneira de aplicar

    parcialmente os argumentos. - Performance. - Ergonomia.
  13. - Funções que não fazem I/O. - Não causam efeitos

    colaterais. - Não possuem dependências de dados*.
  14. - Recursões são a maneira declarativa de fazer loops. -

    Toda recursão tem um caso de parada. - JS tem call stack.
  15. - Em avaliação restrita essa linha lança um erro de

    divisão por "0". - Porém com a avaliação preguiçosa essa linha vai ser executada e vai exibir "4".
  16. - Podemos simular a avaliação preguiçosa com funções. - O

    JavaScript só avalia o corpo de uma função quando vai executá-la.
  17. - Criar novas funções operando e compondo funções já criadas.

    - Atomicidade e divisão de responsabilidade total. - `compose`, `pipe`, `flow`, `with`
  18. - Estruturas de dados usados pra compor outras estruturas. -

    No exemplo ao invés de retornar null a função retorna um Option.