Capítulo 3 de 5
Primeiros Passos
Agora que instalamos tudo, vamos começar nos familiarizando com o Haskell utilizando o GHCi, usando a linguagem como uma grande calculadora.
Para isso, existe uma ferramenta chamada GHCi (a sigla significa GHC interactive, ou "GHC interativo"), que veio junto com o compilador que instalamos no capítulo anterior.
Pense no GHCi como um caderno de rascunho: você digita uma expressão, ele responde com o resultado imediatamente, e ninguém precisa criar arquivos, salvar nada, ou compilar nenhum projeto. É o ambiente perfeito para experimentar ideias e se acostumar com o jeito de pensar do Haskell.
Abrindo o GHCi
Abra um terminal, pode ser o terminal do seu sistema operacional, ou o terminal integrado do VSCode Ctrl + ' ou pelo menu.
Digite o seguinte comando e pressione Enter:
ghciO terminal vai exibir algumas linhas de boas-vindas e, no final, uma linha que termina com ghci>. Em algumas versões mais antigas, esse "prompt" pode aparecer como Prelude>. Não se preocupe com a diferença: significam exatamente a mesma coisa.
Essa setinha é o GHCi te dizendo: "estou pronto, pode digitar". Tudo o que você escrever depois dela será avaliado como uma expressão Haskell.
Sua primeira conta
Vamos começar com o mais simples possível. Digite:
ghci> 2 + 2E pressione Enter. O GHCi vai responder:
4Pronto, você acabou de rodar Haskell pela primeira vez. Vamos brincar mais um pouco.
As quatro operações básicas
Os símbolos das operações matemáticas funcionam como você já espera:
+para somar
-para subtrair
*para multiplicar
/para dividir
Experimente cada um deles:
ghci> 10 + 7
17
ghci> 20 - 3
17
ghci> 6 * 4
24
ghci> 15 / 2
7.5Note uma coisa interessante na última linha: 15 / 2 deu 7.5, e não 7. O Haskell entendeu sozinho que, como estamos dividindo, o resultado pode ter casas decimais, e devolveu o número fracionário.
Em muitas linguagens, você precisa avisar o computador disso explicitamente; aqui, ele cuida do detalhe para você.
Ordem das operações e parênteses
A ordem das operações segue exatamente as regras da matemática que você aprendeu na escola: multiplicação e divisão vêm antes de soma e subtração. Veja:
ghci> 2 + 3 * 4
14O Haskell calculou 3 * 4 primeiro 12 e depois somou 2, dando 14. Se você quisesse que a soma viesse primeiro, basta usar parênteses, como esperado:
ghci> (2 + 3) * 4
20Números negativos
Tente agora algo que parece inofensivo:
ghci> 5 + -3Surpresa: o GHCi vai reclamar com uma mensagem de erro!
Isso acontece porque o - em Haskell tem dois significados: ele pode ser a subtração entre dois números ou pode ser o sinal negativo de um número.
Quando você escreve 5 + -3, a linguagem se confunde. A solução é simples: coloque o número negativo entre parênteses. Aí fica claro que o - é só o sinal:
ghci> 5 + (-3)Essa pequena chatice é uma das primeiras "peculiaridades" do Haskell. Tenha ela em mente e você não vai mais cair nessa armadilha.
Potências
Para elevar um número a uma potência, use o símbolo ^:
ghci> 2 ^ 10
1024
ghci> 5 ^ 3
125Divisão inteira e resto
Às vezes você não quer o resultado fracionário de uma divisão. Por exemplo, "quantas vezes 7 cabe em 30?", você quer a resposta 4, sem casas decimais. Para isso, o Haskell oferece duas funções especiais:
div, que faz a divisão inteira (descarta a parte decimal)
mod, que devolve o resto da divisão
Elas se escrevem de um jeito um pouco diferente do + ou *. Por enquanto, basta saber que precisamos colocar o nome entre crases (` ``), assim:
ghci> 30 div 7
4
ghci> 30 `mod`7
2Esse jeito de escrever vai fazer mais sentido nos próximos capítulos. Por enquanto, fique tranquilo de usar.
O atalho it
Toda vez que você faz uma conta no GHCi, ele guarda o último resultado em uma "memória" chamada it. Você pode usá-la como se fosse um número qualquer. Veja:
ghci> 10 + 5
15
ghci> it * 2
30
ghci> it + 1
31É como o botão "ANS" das calculadoras científicas. Quando você está fazendo várias contas em sequência, esse atalho economiza muita digitação.
Saindo do GHCi
Quando quiser fechar o GHCi e voltar para o terminal normal, digite:
ghci> :quit