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

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

  3. None
  4. None
  5. Agradecimentos

  6. Me interrompam!

  7. JavaScript... é complicado

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

  9. None
  10. JavaScript... é complicado • dinâmica e flexível • cheia de

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

  13. JavaScript... é complicado • dinâmica e flexível • cheia de

    *wats* • ecossistema populado
  14. None
  15. JavaScript... é complicado • dinâmica e flexível • cheia de

    *wats* • ecossistema populado • as coisas estão melhorando...
  16. Alternativas

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

  18. language Hipster

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

  20. Alternativas • CoffeeScript, PureScript, Dart, Reason, Haxe… • TypeScript •

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

    LiveView • Lumen
  22. None
  23. Uma linguagem agradável… … para webapps confiáveis … sem exceções

    em tempo de execução … com mensagens de erro amigáveis
  24. Elm • Evan Czaplicki, 2012 • Puramente funcional • Fortemente

    tipada • Haskell, OCaml, F# • Compila para JS • Compilador escrito em Haskell • 0.19.1 (Out/2019)
  25. Linguagem & arquitetura

  26. Linguagem • Funcional

  27. Linguagem • Funcional • Sintaxe

  28. None
  29. None
  30. None
  31. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs)
  32. None
  33. None
  34. None
  35. None
  36. None
  37. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs) • Fortemente tipada
  38. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs) • Fortemente tipada • Alias types
  39. None
  40. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs) • Fortemente tipada • Alias types • Union types
  41. None
  42. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs) • Fortemente tipada • Alias types • Union types • Maybe
  43. None
  44. None
  45. [ 1, NaN, NaN ]

  46. None
  47. None
  48. None
  49. Linguagem • Funcional • Sintaxe • Compiler (runtime exceptions &

    error msgs) • Fortemente tipada • Alias types • Union types • Maybe • Funcional² (sem efeitos colaterais)
  50. Arquitetura • The Elm Architecture (MVU)

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

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

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

  54. Exemplo

  55. None
  56. None
  57. None
  58. None
  59. None
  60. None
  61. Trade-offs

  62. Quem usa? • thoughtbot • Rakuten • NoRedInk • Stone

    • Cálculo Jurídico • PivotalTracker • Emirates • Vy • ...
  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
  64. Dúvidas? speakerdeck.com/eberfreitas twitter.com/eber_freitas github.com/eberfreitas linkedin.com/in/eberfreitas [email protected]