DEV Community

Cover image for REPL: seu melhor amigo no mundo Clojure
Arthur Fücher
Arthur Fücher

Posted on

2

REPL: seu melhor amigo no mundo Clojure

Nos textos anteriores para validar a instalação e configuração do ambiente eu comentei sobre o REPL, quando rodava o comando clj ou lein repl. Vamos então descobrir o que é e para que serve o REPL.

REPL

REPL (eu falo répou) é um acrônimo para Read-Eval-Print Loop. Fazendo uma tradução livre seria um laço de leitura-execução-impressão.

É uma ferramenta de interação onde é possível executar códigos da linguagem, facilitando o desenvolvimento, uma validação de função, entre outros.
Um exemplo de REPL de javascript é o console do navegador, nele você consegue escrever uma instrução em javascript, o navegador então irá:

  • Ler a instrução que você colocou;
  • Executar a instrução;
  • Imprimir o resultado da instrução;

Depois disso ficará esperando uma nova instrução e repetirá o processo, ficando num laço eterno.
Diversas linguagens possuem isso e é uma excelente forma de começar a aprender a linguagem.

Na prática

Abra o REPL rodando o comando lein repl no terminal.

Se não tiver o Leiningen instalado, sugiro dar uma lida no Leinigen: Configurando ambiente dev para Clojure, que lá explico passo-a-passo como instalar.

Uma vez executado, irá nos mostrar algumas informações como versão do Clojure e da JDK, e também sobre um servidor nREPL. Por enquanto podemos ignorar o nREPL, mas sim é possível conectar de remoto nesse REPL 🤯
terminal com a execução do REPL

Olá, mundo!

O REPL agora está parado no laço aguardando uma instrução para executar e imprimir o resultado. Vamos fazer um pequeno teste para ver como funciona.

Por enquanto não repare na sintaxe ou qualquer aspecto da linguagem, o foco é o REPL.

Para começar que tal o famoso Hello world!? Para isso execute o seguinte código no REPL (pprint "Hello world!") e vamos analisar a saída:

user=> (println "Hello world!") #READ
Hello world!                    #EVAL
nil                             #PRINT
user=>                          #LOOP
Enter fullscreen mode Exit fullscreen mode

É possível ver todo o laço, primeiro ele lê a entrada da nossa instrução, e em seguida executa o código que nesse caso é para imprimir o texto "Hello world!". Depois o nil pode ser confuso, mas é a impressão do resultado da execução, que nesse caso é nulo dado que esse é o retorno da chamada do println. E no final volta para o estado de esperar a próxima execução.

Agora vamos executar uma instrução que não imprima nada, como no caso anterior. Vamos somar 1 e 1 usando o código (+ 1 1):

user=> (+ 1 1) #READ
2              #(EVAL) PRINT 
user=>         #LOOP
Enter fullscreen mode Exit fullscreen mode

Nesse exemplo o passo de executar o código não aparece, pois a soma é feita em memória. Mas depois conseguimos checar que no terminal é impresso o resultado da soma 2.


Eai, o que achou? O REPL é excelente para conhecer funções e estruturas de dados em Clojure. Veja a documentação do println e tente outras funções.
Caso queira se aprofundar, existem conteúdos também sobre REPL Driven Development bem interessantes! Sugiro a palestra REPL Driven Development, Clojure's Superpower - Sean Corfield (em inglês)

Abraços, e até uma próxima!

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay