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 nil atua 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