Saltar para o conteúdo

Haskell/Usando o GHCi

Origem: Wikilivros, livros abertos por um mundo aberto.


Este módulo encontra-se em processo de tradução. A sua ajuda é bem vinda.

GHCi auxilia de várias formas na produção de um trabalho mais eficiente. Nessa sessão, apresentamos uma breve discussão sobre boas práticas usando GHCi.

Autocompletar usando Tab

[editar | editar código-fonte]

Como em outros programas de terminal, você pode iniciar digitando algum texto no GHCi e clicando na tecla tab para ver todas as possibilidades que iniciam com texto que você digitou anteriormente. Quando há somente uma possibilidade, a tecla tab irá autocompletar o texto. Por exemplo, fol<Tab> irá acrescentar a letra "d" (desde que não exista outros itens que iniciem com "fol"). Pressionando a tecla Tab novamente, será listado as quatro funções inclusas no Prelude: foldl, foldl1, foldr e foldr1. Mais opções poderão ser listadas, além dessas, caso você tenha importado mais módulos.

A tecla Tab também funciona quando você está carregando arquivos no GHCi. Por exemplo, depois de digitar :l fi<Tab>, o GHCi irá mostrar todos os arquivos que iniciam com "fi" presentes no seu diretório atual (aquele que você estava quando iniciou o GHCi).

A mesma coisa também se aplica a importação de módulos, depois de digitar :m +Da<Tab> ou import Da<Tab>, você será apresentado a todos os módulos que iniciam com "Da" presentes nos pacotes instalados.


Na linha de comando do GHCi, comandos para o interpretador iniciam com o caractere ":".

  • :help ou :h -- imprime uma lista com todos os possíveis comandos.
  • :load ou :l -- carrega um arquivo no GHCi (você deve digitar o nome do arquivo após o comando :l).
  • :reload ou :r -- lê novamente um arquivo que já foi carregado anteriormente (útil quando o arquivo foi alterado).
  • :type ou :t -- imprime o tipo da expressão passada como parâmetro
  • :module ou :m -- carrega um módulo. você também pode retirar do GHCi um módulo adicionando o símbolo - antes do nome do módulo.


Novamente, você pode visualizar todos os comandos possíveis digitando, :Tab.


Cronometragem de funções no GHCi

[editar | editar código-fonte]

GHCi tem uma maneira básica de medir quanto tempo uma função gasta para ser executada.

  1. digite :set +s na linha de comando do GHCi. Agora, execute a função e o tempo gasto por ela será mostrado após seu output.

Multi-line Input

[editar | editar código-fonte]

Se você quer definir uma função com múltiplas linhas, os caso queira digitar um bloco do no GHCi, há uma maneira simples:

  1. inicie uma nova linha com :{
  2. digite seu código, pressione enter quando precisar de uma nova linha.
  3. digite :} para definir o final das suas múltiplas linhas.

Por exemplo:

   *Main> :{
   *Main| let qualSeuNome = do
   *Main|               putStrLn "Qual o seu nome?"
   *Main|               name <- getLine
   *Main|               putStrLn $ "Oi" ++ name ++ "Como está?" 
   *Main| :}
   *Main>

O mesmo resultado pode ser obtido usando :set +m, isso permitirá o uso de múltiplas linhas. Nesse caso, uma linha em branco definirá o fim do bloco.

Além disso, comandos podem ser separados em uma única linhas usando ponto e vírgula, veja:

   *Main> let qualSeuNome' = do ; putStrLn "Qual o seu nome?" ; name <- getLine ; putStrLn $ "Oi " ++ name ++ " Como está?"