Вот еще один снимок, но с различными результатами вывода , этот использует возможности движка regex, поэтому он может быть быстрее, также интерфейс другой, так как он сопоставляет ключи со строками замены.Я предоставляю это в случае, если это может быть полезно для кого-то с подобным вопросом.
(defn replace-map
"given an input string and a hash-map, returns a new string with all
keys in map found in input replaced with the value of the key"
[s m]
(clojure.string/replace s
(re-pattern (apply str (interpose "|" (map #(java.util.regex.Pattern/quote %) (keys m)))))
m))
Таким образом, использование было бы так:
(replace-map "abc" {"a" "c" "b" "l" "c" "j"})
=> "clj"