Clojure - Ricorsione

Abbiamo visto l'istruzione recur in un argomento precedente e mentre il ciclo "for" è un po 'come un ciclo, recur è un vero e proprio loop in Clojure.

Se hai un background di programmazione, potresti aver sentito parlare della ricorsione in coda, che è una delle principali caratteristiche dei linguaggi funzionali. Questa forma speciale ricorre è quella che implementa la ricorsione della coda. Come indica la parola "ricorsione della coda", la ricorsione deve essere chiamata nella posizione della coda. In altre parole, la ricorrenza deve essere l'ultima cosa da valutare.

L'esempio più semplice dell'istruzione recur viene utilizzato all'interno del ciclo "for". Nell'esempio seguente, l'istruzione recur viene utilizzata per modificare il valore della variabile "i" e restituire il valore della variabile all'espressione del ciclo.

Esempio

(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)

Produzione

Il programma precedente produce il seguente output.

0
1
2
3
4