Constructive Tail Recursive Reverse
reverse makes a new linked list whose elements are in the reverse order of the original list; the original is unchanged.
(reverse '(a b c)) -> (c b a)This function takes advantage of the fact that cons creates a list in the reverse order of the conses that are done, i.e. cons is like a push onto a stack.
(defn trrevb [lst answer] (if (empty? lst) answer (trrevb (rest lst) (cons (first lst) answer)) ) ) (defn trrev [lst] (trrevb lst '()))