Так как recur может использоваться только в положении хвоста, как я могу повторить значение, зависящее от вложенных условных выражений? Ниже приведен пример:Clojure: Идиоматический способ повторения со значениями на основе условных выражений
(loop [a (rand-int) b 0]
(if (< a 300)
(recur (rand-int) 1))
(if (a < 10000)
(recur (rand-int) 5))
b)
Проблема заключается в том, что повторение не происходит в положении хвоста. Итак, как мне зациклировать новое значение, зависящее от внутреннего условного. Я мог бы сделать ссылку и поменять ее в условных выражениях, а затем вернуться в хвостовое положение, но есть ли способ сделать это без значения мутации?