(def p (s/top-down (s/match (m/pred string? ?s) (keyword ?s) ?x ?x))) (p [1 ["a" 2] "b" 3 "c"]) => [1 [:a 2] :b 3 :c]