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?

Avatar for Vitor Luiz Cavalcanti

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.