Каково точное определение "положения хвоста" для повторения в clojure. Я бы подумал, что это будет последний элемент в S-выражении цикла, но в приведенном ниже примере мне кажется, что S-выражение, которое начинается с (если...) находится в хвостовом положении, т.е. ([LOOP KEYWORD] [ОБЯЗАТЕЛЬНЫЕ ЗАЯВЛЕНИЯ] [IF STATEMENT]).
(= __
(loop [x 5
result []]
(if (> x 0)
(recur (dec x) (conj result (+ 2 x)))
result)))
код, взятый из http://www.4clojure.com/problem/68
Близко связанный вопрос: Как я могу вызвать recur в условии if в Clojure?