Langton's ant in Clojurescript
I don't have any performance related suggestions unfortunately. I do have a couple cleanup suggestions though.

The bounds checking function can be cleaned up a bit by making use of "comparison chaining" similar to what you'd use in Pytbon:

(defn within-bounds? [[row col] width height]
  (and (&lt; -1 row width)
       (&lt; -1 col height)))




In the iteration function, you have

{:width width
 :height height
 :grid next-grid
 :ant-pos next-pos
 :ant-dir next-dir
 :stopped? false}


This is less than ideal for a few reasons


You're reassociating entries that already exist in the map. This is unlikely to effect performance, but causes unneeded code bloat. It also creates a potential source of bugs if you add a new entry into the game state. Will you remember to update the map retuned by the function? I'd use assoc here instead.
You're associating false with the :stopped? key. Following the logic of the function though, it must already be falsey there.


I'd just write

(assoc world :grid next-grid
             :ant-pos next-pos
             :ant-dir next-dir}




In init-world, you're using (into []) to convert to vectors. This can be written slightly neater using vec.

:grid (vec (repeat height
                   (vec (repeat width 0))))


I also typically space this code out like I have above (I actually write this exact code fairly often).



This is entirely subjective, but instead of maintaining a :stopped? flag, I prefer to use a :running? one instead (the logic is flipped). I find it tends to lead to easier to read code.