$30 off During Our Annual Pro Sale. View Details »

Contruindo aplicações livres de erros com Elm

Contruindo aplicações livres de erros com Elm

Éber Freitas Dias

March 04, 2020
Tweet

More Decks by Éber Freitas Dias

Other Decks in Programming

Transcript

  1. Construindo
    aplicações livres
    de erros com
    Elm

    View Slide

  2. Oi, eu sou o Éber!
    ● formado em Design Gráfico
    ● 15 anos (mais ou menos) de XP c/ webdev
    ● programador na Radify - Elm/Elixir

    View Slide

  3. O que é Elm?
    ● puramente funcional
    ● fortemente tipada
    ● webapps confiáveis
    ● aprendizado e utilização agradáveis
    ● compila para javascript
    ● sem erros em tempo de execução

    View Slide

  4. $> elm repl

    View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. Mas como assim… Livre de erros?

    View Slide

  10. https://rollbar.com/blog/top-10-javascript-errors/

    View Slide

  11. Uncaught TypeError: Cannot read property
    TypeError: ‘undefined’ is not an object
    TypeError: null is not an object
    (unknown): Script error
    TypeError: Object doesn’t support property
    TypeError: ‘undefined’ is not a function
    Uncaught RangeError
    TypeError: Cannot read property ‘length’
    Uncaught TypeError: Cannot set property
    ReferenceError: event is not defined

    View Slide

  12. Uncaught TypeError: Cannot read property
    TypeError: ‘undefined’ is not an object
    TypeError: null is not an object
    (unknown): Script error
    TypeError: Object doesn’t support property
    TypeError: ‘undefined’ is not a function
    Uncaught RangeError
    TypeError: Cannot read property ‘length’
    Uncaught TypeError: Cannot set property
    ReferenceError: event is not defined

    View Slide

  13. “TypeError é quando você tenta
    executar uma função ou operação em
    um dado incorreto”

    View Slide

  14. JavaScript...
    ● tipagem fraca e dinâmica
    ● estado compartilhado
    ● mutabilidade
    ● side-effects

    View Slide

  15. View Slide

  16. A abordagem Elm...

    View Slide

  17. A abordagem Elm...
    ● compilação

    View Slide

  18. View Slide

  19. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática
    ● imutabilidade

    View Slide

  25. View Slide

  26. View Slide

  27. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática
    ● imutabilidade
    ● sem estado compartilhado

    View Slide

  28. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática
    ● imutabilidade
    ● sem estado compartilhado
    ● sem null/undefined/NaN

    View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática
    ● imutabilidade
    ● sem estado compartilhado
    ● sem null/undefined/NaN
    ● funções totais

    View Slide

  36. “Funções totais são funções que te dão
    um retorno válido para qualquer
    combinação de argumentos válidos”

    View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. A abordagem Elm...
    ● compilação
    ● tipagem forte e estática
    ● imutabilidade
    ● sem estado compartilhado
    ● sem null/undefined/NaN
    ● funções totais
    ● sem side-effects

    View Slide

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

    View Slide

  42. Vamos usar Elm p/ tudo!!?
    E JavaScript é uma droga?!?

    View Slide

  43. É difícil de aprender?

    View Slide

  44. Como aprender mais...
    ● 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
    ● https://t.me/elmbrasil
    ● https://perifacode.com

    View Slide

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

    View Slide