Clojure - rekurencja
Widzieliśmy stwierdzenie recur we wcześniejszym temacie i podczas gdy pętla „for” przypomina trochę pętlę, recur to prawdziwa pętla w Clojure.
Jeśli masz doświadczenie w programowaniu, być może słyszałeś o rekurencji ogonowej, która jest główną cechą języków funkcjonalnych. Ta specjalna forma cykliczna implementuje rekurencję ogonową. Jak wskazuje słowo „rekurencja ogona”, recur musi zostać wywołany w pozycji ogona. Innymi słowy, wartość recur musi być ostatnią oceną.
Najprostszy przykład instrukcji recur jest używany w pętli „for”. W poniższym przykładzie instrukcja recur jest używana do zmiany wartości zmiennej „i” i przekazania wartości zmiennej z powrotem do wyrażenia pętli.
Przykład
(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)
Wynik
Powyższy program generuje następujące dane wyjściowe.
0
1
2
3
4