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

Usando Elm para desenhar um frontend de fazer i...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Usando Elm para desenhar um frontend de fazer inveja

Nessa palestra eu introduzo os principais aspectos da linguagem, que é puramente funcional (e por isso carrega todas as características de uma linguagem funcional) e foi feita para ser usada no frontend.

* a imagem que apresenta o fluxo de uma aplicação Elm (slide 17) foi retirada de uma oficina apresentada por Roberto e Rogério [1]

[1]: http://robertosoares.me/oficina-elm/#/

Other Decks in Programming

Transcript

  1. Maybe? type Maybe a = Nothing | Just a >

    Nothing Nothing : Maybe a > Just <function> : a -> Maybe a > Just "oi" Just "oi" : Maybe String > Just 3.14 Just 3.14 : Maybe Float 12
  2. Maybe! type alias User = { nome : String ,

    idade : Maybe Int } edu = { nome = "Edu", idade = Nothing } ardo = { nome = "Ardo", idade = Just 25 } podeBeber usuario = case usuario.idade of —— Elm te obriga a tratar Nothing -> todos os casos False Just idade -> idade >= 21 13
  3. arquitetura —— model estado da sua aplicação —— update recebe

    um estado atual e retorna um novo model —— view uma forma de enxergar o estado, em HTML 16
  4. 17

  5. ferramentas embutidas —— repl $ elm-repl —— compilador $ elm-make

    —— gerenciador de pacotes $ elm-package —— servidor de desenvolvimento $ elm-reactor 18
  6. 21

  7. principais tipos —— valores 42 : number 'e' : Char

    "rsjs" : String (12, "que horas é o almoço?") : (number, String) [8, 7, 6] : List number {x = 6, y = 8} : { x: number, y: number } —— aliases type alias Ponto = { x : number, y : number } 22
  8. funções add : number -> number -> number add x

    y = x + y > add 4 5 9 : number 23
  9. map, filter e piping menorQueDois item = item < 2

    quadrado numero = numero * numero menoresQueDois lista = 
 List.filter menorQueDois lista 
 tudoAoQuadrado lista = List.map quadrado menoresQueDois minhaLista
 |> tudoAoQuadrado 24
  10. inferência de tipos add x y = x + y

    <function> : number -> number -> number add : number -> number -> number add x y = x + y horaDoAlmoco : Boolean horaDoAlmoco = True 25
  11. funções parcialmente aplicadas add : number -> number -> number

    add x y = x + y > add 4 5 9 : number > add4 = add 4 add : number -> number > add4 5 9 : number 26
  12. imutabilidade ponto = { x = 3, y = 5

    } —— você pode ler ponto.x —— mas não pode alterar assim ponto.x = 4 —— mas assim pode outroPonto = { ponto | x = 4 } 27
  13. view model = div [ class "content" ] [ h1

    [] [ text model.nome ] ] e HTML, comofas?! view model = div [] [
 input [ type "text"] [] , div [] [ text (String.reverse "ualbax") ]
 ] 28
  14. module Main exposing (..) import Html exposing (..) import Html.Attributes

    exposing (class) model = { nome = "Edu" } view model = div [ class "content" ] [ h1 [] [ text model.nome ] ] update model = 
 model main = Html.beginnerProgram { view = view , update = update , model = model } agora tudo junto 29
  15. e pra instalar? $ npm install -g elm
 pacotes de

    instalação (windows e mac) 
 repositório: https://github.com/elm-lang/elm-platform 30