Если я правильно понимаю ваш вопрос: если ваша карта имеет ключ и / или значение, которое удовлетворяет условию, вы хотите не обрабатывать карту, а просто вернуть маркер, который вы покинули раньше.Для этого вы можете использовать цикл:
(defn my-func [my-map]
(loop [m my-map]
(if-let [[k v] (first m)]
(if (= v 4) ;; your condition for exit-early
:four ;; return your exit-early marker
(recur (rest m)))
my-map))) ;; you looped throught the whole map without exit-early
(my-func {:a 1 :b 2 :c 3 :d 4 :e 5})
Вы можете даже передать предикат выхода-ранний и маркер в качестве аргументов:
(defn my-func [my-map kv-exit-pred marker]
(loop [m my-map]
(if-let [[k v] (first m)]
(if (kv-exit-pred k v)
marker
(recur (rest m)))
my-map)))
(my-func {:a 1 :b 2 :c 3 :d 4 :e 5} #(= %2 3) :three)
В обоих случаях, если вы нене выходите пораньше, затем просто верните исходную карту (как это делает ваша функция на практике).