Elm

Elm é uma linguagem de programação voltada para o lado cliente das aplicações para web e utiliza o paradigma de programação funcional tipada. O compilador gera código JavaScript. O principal benefício de Elm é fazer com que seja muito difícil produzir código que apresente erros em tempo de execução (no runtime exceptions).

A sintaxe Elm é fortemente inspirada em Haskell, uma das linguagens de programação mais consistentes com os preceitos do paradigma de programação funcional.

Elementos da Linguagem

Tipos primitivos

Por ser uma linguagem fortemente tipada, toda variável ou parâmetro de função precisa ter o tipo definido. Os tipos primitivos em Elm são:

  • Int para números inteiros. Exemplo: 67
  • Float para números reais. Exemplo: 34.23
  • String para strings. Exemplo: "como programar"
  • Bool para valores lógicos. Exemplos: True e False

Variáveis

Na declaração de variáveis ou o desenvolvedor define explicitamente o tipo ou o compilador infere a partir do valor atribuído.

No exemplo a seguir são definidas duas variáveis, nome e aprovado:

nome : String
nome =
  "Fulano de Tal"

aprovado : Bool
aprovado =
  True

As variáveis também podem armazenar vários dados ao mesmo tempo, na forma de lista ou de registro.

O exemplo a seguir define que a variável notas é uma lista que armazena números reais.

notas : List Float
notas = [8.5 , 6.0, 9.5]

O exemplo a seguir mostra que a variável pessoa armazena o nome, a idade e a altura de uma pessoa.

type alias Pessoa = 
  { nome : String
  , idade : Int
  , altura : Float
  }

pessoa : Pessoa
pessoa = {nome = "Fulano de Tal", idade = 34, altura = 1.97}

Funções

Na declaração de funções, como no caso das variáveis cabe ao desenvolvedor definir os tipos dos parâmetros e o tipo do dado retornado ou então o compilador infere a partir da definição da função.

No exemplo a seguir está sendo definida a função media que calcula a média de dois números reais. O compilador infere que as variáveis n1 e n2 são do tipo Float e que a função retorna também um Float

media n1 n2 =
  (n1 + n2) / 2

No entanto, a prática mais recomendada dentro do espírito da programação funcional tipada é sempre iniciar com a especificação dos tipos envolvidos na função. Por exemplo, a função acima seria definida da seguinte forma:

media : Float -> Float -> Float
media n1 n2 =
  (n1 + n2) / 2

No exemplo a seguir, a função mudaIdade altera a idade de uma pessoa (definida acima).

mudaIdade: Pessoa -> Int -> Pessoa
mudaIdade pessoa novaIdade =
  { pessoa | idade = novaIdade }

Observe que a função mudaIdade é do tipo pura (um dos princípios do paradigma de programação funcional). Uma função pura, para relembrar, nunca pode alterar uma informação. Então a única solução é gerar uma nova versão da informação.

Programa

O código abaixo mostra um programa em Elm que calcula a média de dois números e mostra o resultado na tela.

import Html exposing (text)

media : Float -> Float -> Float
media n1 n2 =
   (n1 + n2) / 2

main =
  text (toString (media 8.8 4.2))

Arquitetura

O mais importante em Elm, no entanto, é a chamada Arquitetura Elm que define como aplicações para web devem ser estruturadas.

De forma simplificada, a arquitetura define que toda a aplicação, não importa o seu tamanho, deve ser organizada com base em três conceitos:

  • model : Uma única variável deve ser usada para representar os dados manipulados pela aplicação. Esta variável representa o estado atual da aplicação.

  • update : Uma única função usada para atualizar o modelo. Esta função deve ter dois parâmetros: o primeiro representa o modelo atual (situação atual da aplicação) e o segundo representa a intenção do usuário (o que que ele quer se seja feito). A função, ao ser executada, gerará um novo modelo, sem alterar o modelo original.

  • view : Uma única função usada para gerar uma página HTML onde os dados contidos no modelo são exibidos. Esta função deve ter um único parâmetro: um modelo. O resultado desta função é uma String cujo conteúdo é um texto HTML.

    Conceitualmente, a execução de uma aplicação escrita em Elm segue o seguinte algoritmo:

  1. O modelo é criado.
  2. A função view é executada gerando a página HTML.
  3. A página HTML é exibida pelo navegador.
  4. O usuário interage com a página (via mouse, teclado, etc) manifestando sua vontate.
  5. A vontade do usuário (representada por uma variável) é enviada ao runtime Elm e a função update é executada, gerando um novo modelo.
  6. Continue a partir do passo 2 acima.
Leitura Obrigatória
Elm Home Page
Depoimento: Elm em produção
Exemplos Elm
Leitura Sugerida
Erros em Elm
Sobre Union Types

results matching ""

    No results matching ""