Я хочу выполнить определенное количество времени определенной операции (например, генерации племени). Каждый раз, когда я хотел бы использовать вывод предыдущей итерации в качестве ввода следующего.Clojure: Выполнение операции n раз с использованием вывода в качестве ввода следующей операции (a-la reduce)
Я достигаю этого, выполняя фиктивный снимок по набору из n элементов, тогда я рассматриваю только аккумулятор и выбрасываю элемент из коллекции.
(defn generate-game [world n-tribes]
(let [ game (create-game world)
game (reduce (fn [acc, _] (:game (generate-tribe acc))) game (repeat n-tribes :just_something))]
game))
Я предполагаю, что есть намного лучший способ сделать это. Можете ли вы помочь мне найти его?
Iterate - это то, что я искал. Окончательное решение немного отличается, потому что gener-tribe возвращает карту, содержащую игру (в ней также содержится племя генерации). Для меня окончательное решения: '' ' (defn генерировать-игры [мир н-племена] (пусть [игра (создание-игрового мир) игры (NTH (итерационные # (: игра (генерировать -tribe%)) game) n-tribes: just_something)] игра)) '' ' –