All the methods that you were looking for should mainly work with sequences, where the execution of certain actions a certain number of times is used as a loop. Clojure provide dotimes to perform certain actions for a certain number of times:
(dotimes [i 10] (println i))
This way your code will become something like:
(dotimes [i num-sides] (let [pos-x (cos (* theta i)) pos-y (sin (* theta i))] (ellipse pos-x pos-y poly-size poly-size)))
source share