Haskell/Usando o GHCi


Translation arrow.svg 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 TabEditar

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.


": comandos"Editar

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 GHCiEditar

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 InputEditar

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á?"