Обычно , если вы хотите вернуть набор, карту или другое «отдельное значение», которое не является последовательностью из «повторной» обобщенной операции в последовательности, использование reduce
более идиоматично/ прямолинейнее, чем loop/recur
, а for
всегда возвращает последовательность (не набор или карту).
(reduce conj #{} (for [i (range 10) j (range 10)] [i j]))
обратите внимание, что (для ..) здесь используется только для создания последовательности, содержащей всезначения для компиляции в единый результат set .Или, например:
(reduce + 0 (range 100))
=> 4950