Elm - sintaxe básica

Este capítulo discute como escrever um programa simples no elm.

Step 1 − Create a directory HelloApp in VSCode

Agora, crie um arquivo - Hello.elm neste diretório.

O diagrama acima mostra a pasta do projeto HelloApp e terminal aberto em VSCode.

Step 2 − Install the necessary elm packages

O gerenciador de pacotes em elm é elm-package . Instale o pacote elm-lang / html . Este pacote nos ajudará a exibir a saída do código do elm no navegador.

Atravessar para o HelloApp pasta do projeto clicando com o botão direito em Arquivo → Abrir no prompt de comando no VSCode.

Execute o seguinte comando na janela do terminal -

C:\Users\dell\Elm\HelloApp> elm-package install elm-lang/html

Os seguintes arquivos / pastas são adicionados ao diretório do projeto na instalação do pacote.

  • elm-package.json (arquivo), armazena metadados do projeto
  • elm-stuff (pasta), armazena pacotes externos

A mensagem a seguir aparecerá quando o pacote for instalado com sucesso.

Step 3 − Add the following code to the Hello.elm file

-- importing Html module and the function text
import Html exposing (text)

-- create main method
main =
-- invoke text function
text "Hello Elm from TutorialsPoint"

O programa acima exibirá uma mensagem de string Hello Elm from TutorialsPoint no navegador.

Para isso, precisamos importar a função text dentro do Htmlmódulo. A função de texto é usada para imprimir qualquer valor de string no navegador. O método principal é o ponto de entrada para um programa. O método principal invoca a função de texto e passa um valor de string para ela.

Step 4 − Compile the project

Execute o seguinte comando na janela do terminal VSCode.

elm make Hello.elm

A saída do comando acima é mostrada abaixo -

//update path to the proj folder in the command elm make
C:\Users\dell\elm\HelloApp>elm make Hello.elm
Success! Compiled 38 modules.
Successfully generated index.html

O comando acima irá gerar um index.htmlArquivo. O compilador elm converte o arquivo .elm em JavaScript e o incorpora aoindex.html Arquivo.

Step 5 − Open the index.html in the browser

Abra o arquivo index.html em qualquer navegador. A saída será como mostrado abaixo -

Comentários no Elm

Os comentários são uma forma de melhorar a legibilidade de um programa. Os comentários podem ser usados ​​para incluir informações adicionais sobre um programa, como autor do código, dicas sobre a construção de uma função, etc. Os comentários são ignorados pelo compilador.

Elm suporta os seguintes tipos de comentários -

  • Comentários de uma linha (-) - Qualquer texto entre um - e o final de uma linha é tratado como um comentário.

  • Comentários multilinhas ({- -}) - Esses comentários podem abranger várias linhas.

Ilustração

-- this is single line comment

{- This is a
   Multi-line comment
-}

Linhas e recuo

Elm não fornece chaves para indicar blocos de código para definições de função ou controle de fluxo. Os blocos de código são denotados por recuo de linha, que é rigidamente aplicado. Todas as instruções dentro de um bloco devem ser indentadas com o mesmo valor. Por exemplo -

module ModuleIf exposing (..)
x = 0

function1 =
   if x > 5 then
      "x is greater"
   else
      "x is small"

No entanto, o bloco a seguir gera um erro -

-- Create file ModuleIf.elm
module ModuleIf exposing (..)
x = 0

function1 =
   if x > 5 then
      "x is greater"
         else --Error:else indentation not at same level of if statement
      "x is small"

Assim, em Elm, todas as linhas contínuas recuadas com o mesmo número de espaços formariam um bloco.

C:\Users\admin>elm repl
---- elm-repl 0.18.0 -----------------------------------------------------------
   :help for help, :exit to exit, more at 
   <https://github.com/elm-lang/elm-repl>
   ---------------------------------------
   -----------------------------------------

> import ModuleIf exposing(..) -- importing module from ModuleIf.elm file
>function1 -- executing function from module
-- SYNTAX PROBLEM ---------------------------------------------------

I need whitespace, but got stuck on what looks like a new declaration. 
You are either missing some stuff in the declaration above or just need to add some spaces here:
7| else
   ^
I am looking for one of the following things:

   whitespace