Em vez de mapas aninhados, use (parcial) para manipular objetos dentro das sequências

É uma solução mais longa, mas com menos parênteses, mais linear e mais simples, uma vez que você tenha entendido bem.

(->> [[["foo" "bar"] ["bak" "wak"]][["koo" "kar"]]] 
(map (fn [x] (map (fn [y] (map #(str "X-" %) y)) x))))

versus

(->> [[["foo" "bar"] ["bak" "wak"]][["koo" "kar"]]] 
((->> (partial str "X-") (partial map) (partial map) (partial map))))

ambos cedendo

((("X-foo" "X-bar") ("X-bak" "X-wak")) (("X-koo" "X-kar")))