Your SlideShare is downloading. ×
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Programação Funcional: Novos Horizontes para a Expansão da Consciência
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Programação Funcional: Novos Horizontes para a Expansão da Consciência

1,983

Published on

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,983
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
33
Comments
0
Likes
6
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. ProgramaçãoFuncional: NovosHorizontespara a Expansão da Consciência
    Andrei de Araújo Formiga
    @andreiformiga
  • 2.
  • 3.
  • 4. Escolas de Magia
  • Porque?
    Novospontos de vista
    Novasformas de fazermagia
  • 12.
  • 13. Escolas de Programação
    • ProgramaçãoImperativa
    • 14. Máquinas de Turing
  • Escolas de Programação
    • ProgramaçãoFuncional
    • 15. Lambda-cálculo
    • 16. Sistemas de reescrita
  • ProgramaçãoImperativa
    • Efeitoscolateraissãovitais
    • 17. Computação = alteraçõesno estado da memória
  • Efeitos = Problemas
    • Variáveisglobais
    • 18. “Global variables are evil”
    • 19. Aliasing
    • 20. Mais de umareferênciapara o mesmoobjeto
    • 21. Problemático se o objetoémutável
  • Efeitos = Dificuldades
    • Otimizações
    • 22. Análisesestáticas
    • 23. Segurança
    • 24. Corretude
    • 25. Compartilhamento e Concorrência
  • SemEfeitos?
    O mundomudaporcausa dos efeitos?
  • 26. Solução: ControlarEfeitos
    • OO: Encapsulamento
    • 27. Passagem de Mensagens
    • 28. Estado local nãocompartilhado
  • ProgramaçãoFuncional
    • Funçõescomoconceitobásico
    • 29. Cidadãos de 1aclasse
    • 30. Efeitoscolateraiscontrolados
    • 31. Diferentesníveis de controle
  • Características
    • Funções de altaordem
    • 32. Inferência de tipos
    • 33. Pattern matching
    • 34. Tipos de Dados Algébricos
  • Características
    • Polimorfismo(genéricos)
    • 35. Avaliaçãopreguiçosa (lazy)
    • 36. Continuações
    • 37. Mônadas e Sistemas de Efeitos
  • Pesquisae Inovação
    • Tradição de Pesquisaemlinguagensfuncionais
    • 38. Muitasinovaçõessurgiram 1onaslinguagensfuncionais
    • 39. Fama de paradigma“acadêmico”
  • Tiposfantasmas, mônadas, catamorfismos, anamorfismos, GADTs…
  • 40.
  • 41. Linguagens
  • SeráJavaScriptumaLinguagemFuncional?
  • 47. “JavaScript is the first lambda language to go mainstream”
    JavaScript: The Good Parts, Douglas Crockford
  • 48. Funções de Alta Ordem
    • Funçõesqueusamfunções
    • 49. Funções de 1aclasse
    • 50. JavaScript tem isso
  • Funçõesem JS
    • Funçõesanônimas e closures
    • 51. Callbacks e Eventos
    • 52. HOFs tradicionais
  • Funçõesem JS
    function filter(pred, a) {
    varres = [];
    for (iin a) {
    if (pred(a[i]))
    res.push(a[i]);
    }
    return res;
    }
    filter(function (x) { return x > 5 },
    [4, 5, 10, 8, 12, 2, 1, 9])
    > [10, 8, 12, 9]
  • 53. Funçõesem JS
    function reduce(f, a, i)
    {
    varres = i;
    for (iin a)
    res = f(res, a[i]);
    return res;
    }
    reduce(function (s, x) { return s + x },
    [4, 5, 10, 8, 12, 2, 1, 9], 0)
    > 51
  • 54. Disponívelem um JavaScript próximo de você
    vara = [4, 5, 10, 8, 12, 2, 1, 9];
    a.filter(function (x) { return x > 5 })
    > [10, 8, 12, 9]
    a.reduce(function (s, x) { returns+x })
    > 51
  • 55. Anamorfismo = reduce
  • 56. Mônadas
  • MônadassãoPadrões
    • Coleções
    • 60. Quebrar + processar + retornar
  • Mônadasem JS
    function Cookie(val) {
    // armazena dado em um cookie
    }
    varv1 = cookie1.get()
    varv2 = morfar(v1)
    varcookie2 = newCookie(v2)
  • 61. Mônadasem JS
    functionCookie(val) {
    // armazena dado em um cookie
    }
    Cookie.prototype.ret = function (v) {
    returnnew Cookie(v);
    }
    Cookie.prototype.bind = function(f) {
    returnnew Cookie( f(this.get()) );
    }
  • 62. Mônadasem JS
    var cookie2 = cookie1.bind(morfar)
  • 63. MônadascontrolamEfeitos
    Haskell: efeitossópodemacontecerdentro de mônadas
  • 64. MônadascontrolamEfeitos
    Experiência: maior parte do códigonãoprecisa de efeitos
  • 65. Efeitos e Concorrência
    Se nãoháefeitoscompartilhados, paralelizarétrivial.
  • 66. “once you get the hang of it, functional programming is really fun”
    JavaScript: The Good Parts, Douglas Crockford
  • 67. Para AprenderMais
    mitpress.mit.edu/sicp
  • 68. Para AprenderMais
    htdp.org
  • 69. Para AprenderMais
    The Functional
    Approach to
    Programming
  • 70. Obrigado!
    @andreiformiga

×