Vimos a instrução recorrente em um tópico anterior e enquanto o loop 'for' é um pouco como um loop, recur é um loop real em Clojure.
Se você tem experiência em programação, talvez já tenha ouvido falar em recursão de cauda, que é um recurso importante das linguagens funcionais. Esta forma especial recorrente é aquela que implementa a recursão da cauda. Como a palavra “recursão da cauda” indica, recur deve ser chamado na posição da cauda. Em outras palavras, a recorrência deve ser a última coisa a ser avaliada.
O exemplo mais simples da instrução recorrente é usado dentro do loop 'for'. No exemplo a seguir, a instrução recur é usada para alterar o valor da variável 'i' e alimentar o valor da variável de volta para a expressão de loop.
Exemplo
(ns clojure.examples.hello
(:gen-class))
;; This program displays Hello World
(defn Example []
(loop [i 0]
(when (< i 5)
(println i)
(recur (inc i)))))
(Example)
Resultado
O programa acima produz a seguinte saída.
0
1
2
3
4