Expressões vs Declarações
Diferente de linguagens imperativas, em Clojure tudo é uma expressão.
Summary
Uma expressão é uma unidade de código que, ao ser avaliada, obrigatoriamente retorna um valor.
Quando um bloco contém múltiplas expressões (como no corpo de uma função ou em um let), o valor de retorno do bloco é o resultado da última expressão avaliada.
Efeitos Colaterais
Em Clojure, mesmo expressões que possuem o objetivo principal de realizar efeitos colaterais devem respeitar a regra de retorno.
Expressões que executam apenas efeitos colaterais (como imprimir no console ou gravar em um banco de dados) retornam o valor nil.
NOTE
O valor
nilatua como um marcador de “ausência de valor” ou “fim de processamento” para o fluxo de dados.
Referências
https://clojure.org/guides/learn/flow#_statements_vs_expressions