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

Stack funcional com Elm

Stack funcional com Elm

Éber Freitas Dias

February 29, 2020
Tweet

More Decks by Éber Freitas Dias

Other Decks in Programming

Transcript

  1. Stack funcional
    com Elm

    View Slide

  2. Olá, eu sou o Éber!
    Elixir & Elm - Radify

    View Slide

  3. View Slide

  4. View Slide

  5. Agradecimentos

    View Slide

  6. Me interrompam!

    View Slide

  7. JavaScript... é complicado

    View Slide

  8. JavaScript... é complicado
    ● dinâmica e flexível

    View Slide

  9. View Slide

  10. JavaScript... é complicado
    ● dinâmica e flexível
    ● cheia de *wats*

    View Slide

  11. View Slide

  12. What the… JavaScript? - Kyle Simpsons
    https://youtu.be/2pL28CcEijU

    View Slide

  13. JavaScript... é complicado
    ● dinâmica e flexível
    ● cheia de *wats*
    ● ecossistema populado

    View Slide

  14. View Slide

  15. JavaScript... é complicado
    ● dinâmica e flexível
    ● cheia de *wats*
    ● ecossistema populado
    ● as coisas estão melhorando...

    View Slide

  16. Alternativas

    View Slide

  17. Alternativas
    ● CoffeeScript, PureScript, Dart,
    Reason, Haxe…

    View Slide

  18. language
    Hipster

    View Slide

  19. Alternativas
    ● CoffeeScript, PureScript, Dart,
    Reason, Haxe…
    ● TypeScript

    View Slide

  20. Alternativas
    ● CoffeeScript, PureScript, Dart,
    Reason, Haxe…
    ● TypeScript
    ● LiveView

    View Slide

  21. Alternativas
    ● CoffeeScript, PureScript, Dart,
    Reason, Haxe…
    ● TypeScript
    ● LiveView
    ● Lumen

    View Slide

  22. View Slide

  23. Uma linguagem agradável…
    … para webapps confiáveis
    … sem exceções em tempo de execução
    … com mensagens de erro amigáveis

    View Slide

  24. Elm
    ● Evan Czaplicki, 2012
    ● Puramente funcional
    ● Fortemente tipada
    ● Haskell, OCaml, F#
    ● Compila para JS
    ● Compilador escrito em Haskell
    ● 0.19.1 (Out/2019)

    View Slide

  25. Linguagem &
    arquitetura

    View Slide

  26. Linguagem
    ● Funcional

    View Slide

  27. Linguagem
    ● Funcional
    ● Sintaxe

    View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)

    View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)
    ● Fortemente tipada

    View Slide

  38. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)
    ● Fortemente tipada
    ● Alias types

    View Slide

  39. View Slide

  40. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)
    ● Fortemente tipada
    ● Alias types
    ● Union types

    View Slide

  41. View Slide

  42. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)
    ● Fortemente tipada
    ● Alias types
    ● Union types
    ● Maybe

    View Slide

  43. View Slide

  44. View Slide

  45. [ 1, NaN, NaN ]

    View Slide

  46. View Slide

  47. View Slide

  48. View Slide

  49. Linguagem
    ● Funcional
    ● Sintaxe
    ● Compiler (runtime exceptions & error msgs)
    ● Fortemente tipada
    ● Alias types
    ● Union types
    ● Maybe
    ● Funcional² (sem efeitos colaterais)

    View Slide

  50. Arquitetura
    ● The Elm Architecture (MVU)

    View Slide

  51. https://elmprogramming.com/model-view-update-part-1.html

    View Slide

  52. Arquitetura
    ● The Elm Architecture (MVU)
    ● Commands & Subscriptions

    View Slide

  53. https://elmprogramming.com/subscriptions.html

    View Slide

  54. Exemplo

    View Slide

  55. View Slide

  56. View Slide

  57. View Slide

  58. View Slide

  59. View Slide

  60. View Slide

  61. Trade-offs

    View Slide

  62. Quem usa?
    ● thoughtbot
    ● Rakuten
    ● NoRedInk
    ● Stone
    ● Cálculo Jurídico
    ● PivotalTracker
    ● Emirates
    ● Vy
    ● ...

    View Slide

  63. Como aprender?
    ● https://guide.elm-lang.org/
    ● https://elmprogramming.com/
    ● https://www.manning.com/books/elm-in-action
    ● https://cuducos.me/2016/10/24/vamos-aprender-elm.html
    ● https://www.twitch.tv/eberfreitas

    View Slide

  64. Dúvidas?
    speakerdeck.com/eberfreitas
    twitter.com/eber_freitas
    github.com/eberfreitas
    linkedin.com/in/eberfreitas
    [email protected]

    View Slide